Advertisement
Guest User

Untitled

a guest
May 20th, 2019
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. from validator import Validator
  2. from abc import ABCMeta, abstractmethod
  3. from fileProcessor import FileProcessor
  4.  
  5.  
  6. class AbstractBuilder(metaclass=ABCMeta):
  7. def __init__(self):
  8. self.fileProcessor = FileProcessor()
  9. self.result = ""
  10.  
  11. def get_result(self):
  12. return self.result
  13.  
  14. @abstractmethod
  15. def add_class_name(self):
  16. pass
  17.  
  18. @abstractmethod
  19. def add_attributes(self):
  20. pass
  21.  
  22. @abstractmethod
  23. def add_methods(self):
  24. pass
  25.  
  26. @abstractmethod
  27. def add_relationships(self):
  28. pass
  29.  
  30.  
  31. class PythonClassBuilder(AbstractBuilder):
  32. def check_methods(self, listitem, result):
  33. if Validator.validate_method_name(listitem):
  34. result += '\n'
  35. result += 'def ' + listitem + '(self):\n # Todo: inco' \
  36. 'mplete\n pass\n'
  37. else:
  38. result += "# method name is invalid\n"
  39. return result
  40.  
  41. def add_methods(self, class_item):
  42. for listItem in self.fileProcessor.get_methods(class_item):
  43. result = self.check_methods(listItem, result)
  44.  
  45. def add_relationships(self, class_item, result):
  46. for list_item in self.get_relationship(
  47. self.get_class_name(class_item)):
  48. result += list_item
  49. return result
  50.  
  51. def add_attributes(self, class_item, result):
  52. for listItem in self.get_attributes(class_item):
  53. result = self.check_attributes(listItem, result)
  54. if len(self.get_attributes(class_item)) == 0:
  55. result += " pass\n"
  56. return result
  57.  
  58. def check_attributes(self, listitem, result):
  59. try:
  60. if Validator.validate_attribute_name(listitem):
  61. result += ' self.' + \
  62. listitem + ' = ' + listitem + '\n'
  63. else:
  64. raise NameError('Invalid name: ' + listitem)
  65. except NameError as e:
  66. print(e)
  67. return result
  68.  
  69. def add_class_name(self, class_item):
  70. self.class_name_list.append(self.get_class_name(class_item))
  71. result = "class " + \
  72. self.get_class_name(class_item) + ":\n def __init__(self"
  73. for listItem in self.get_attributes(class_item):
  74. result += ', ' + listItem
  75. result += '):\n'
  76. self.check_class_names(class_item)
  77. return result
  78.  
  79. def check_class_names(self, class_item):
  80. if not Validator.validate_class_name(self.get_class_name(class_item)):
  81. print("Invalid class name: " + self.get_class_name(class_item))
  82.  
  83.  
  84. pythonClassBuilder = PythonClassBuilder()
  85. pythonClassBuilder.add_methods([['class Zoo {\n',
  86. ' name : String\n',
  87. ' location : String\n',
  88. ' add_animal()\n',
  89. ' get_animal()\n',
  90. '}\n'],
  91. ['class Animal {\n',
  92. ' name : String\n',
  93. ' number : Integer\n',
  94. ' __str__()\n',
  95. '}\n']], )
  96. print(pythonClassBuilder.get_result())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement