kuniri 0.0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +9 -7
- data/COPYING +160 -656
- data/Gemfile +4 -3
- data/README.md +57 -27
- data/Rakefile +3 -1
- data/bin/kuniri +50 -26
- data/data/aggregation_lang.rb +33 -0
- data/data/attribute_lang.rb +14 -87
- data/data/class_lang.rb +19 -41
- data/data/comment_lang.rb +52 -0
- data/data/conditional_lang.rb +14 -41
- data/data/constructor_lang.rb +4 -12
- data/data/end_block_lang.rb +7 -6
- data/data/extern_requirement_lang.rb +10 -17
- data/data/function_behavior_lang.rb +17 -66
- data/data/global_function_lang.rb +26 -0
- data/data/lang_syntax.rb +82 -49
- data/data/method_lang.rb +26 -0
- data/data/module_namespace_lang.rb +8 -13
- data/data/repetition_lang.rb +19 -32
- data/data/token_lang.rb +2 -44
- data/data/variable_behaviour_lang.rb +43 -0
- data/data/variable_global_lang.rb +13 -72
- data/kuniri.gemspec +4 -4
- data/lib/kuniri/core/configuration/language_available.rb +2 -2
- data/lib/kuniri/core/kuniri.rb +32 -24
- data/lib/kuniri/core/setting.rb +51 -85
- data/lib/kuniri/error/parser_error.rb +9 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/aggregation.rb +29 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/attribute.rb +0 -40
- data/lib/kuniri/language/abstract_container/structured_and_oo/global_tokens.rb +20 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/repetition.rb +9 -1
- data/lib/kuniri/language/abstract_container/structured_and_oo/variable_global.rb +0 -35
- data/lib/kuniri/language/container_data/structured_and_oo/aggregation_data.rb +23 -0
- data/lib/kuniri/language/container_data/structured_and_oo/attribute_data.rb +4 -2
- data/lib/kuniri/language/container_data/structured_and_oo/basic_structure.rb +24 -0
- data/lib/kuniri/language/container_data/structured_and_oo/class_data.rb +13 -19
- data/lib/kuniri/language/container_data/structured_and_oo/conditional_data.rb +2 -13
- data/lib/kuniri/language/container_data/structured_and_oo/constructor_data.rb +2 -0
- data/lib/kuniri/language/container_data/structured_and_oo/extern_requirement_data.rb +11 -6
- data/lib/kuniri/language/container_data/structured_and_oo/{file_element.rb → file_element_data.rb} +11 -9
- data/lib/kuniri/language/container_data/structured_and_oo/function_abstract.rb +58 -11
- data/lib/kuniri/language/container_data/structured_and_oo/function_data.rb +3 -3
- data/lib/kuniri/language/container_data/structured_and_oo/manager_basic_structure_data.rb +55 -0
- data/lib/kuniri/language/container_data/structured_and_oo/method_data.rb +5 -4
- data/lib/kuniri/language/container_data/structured_and_oo/module_namespace_data.rb +3 -1
- data/lib/kuniri/language/container_data/structured_and_oo/repetition_data.rb +2 -13
- data/lib/kuniri/language/container_data/structured_and_oo/variable_global_data.rb +2 -0
- data/lib/kuniri/language/language.rb +37 -11
- data/lib/kuniri/language/metadata.rb +29 -0
- data/lib/kuniri/language/ruby/aggregation_ruby.rb +37 -0
- data/lib/kuniri/language/ruby/attribute_ruby.rb +23 -38
- data/lib/kuniri/language/ruby/class_ruby.rb +2 -10
- data/lib/kuniri/language/ruby/conditional_ruby.rb +20 -6
- data/lib/kuniri/language/ruby/constructor_ruby.rb +5 -7
- data/lib/kuniri/language/ruby/end_block_ruby.rb +1 -1
- data/lib/kuniri/language/ruby/function_behavior_ruby.rb +1 -9
- data/lib/kuniri/language/ruby/global_function_ruby.rb +32 -0
- data/lib/kuniri/language/ruby/method_ruby.rb +33 -0
- data/lib/kuniri/language/ruby/repetition_ruby.rb +60 -14
- data/lib/kuniri/language/ruby/ruby_syntax.rb +76 -49
- data/lib/kuniri/parser/output_factory.rb +29 -0
- data/lib/kuniri/parser/output_format.rb +134 -0
- data/lib/kuniri/parser/parser.rb +3 -7
- data/lib/kuniri/parser/xml_builder_engine.rb +94 -0
- data/lib/kuniri/parser/xml_output_format.rb +143 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/aggregation_state.rb +45 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/attribute_state.rb +0 -1
- data/lib/kuniri/state_machine/OO_structured_fsm/basic_structure_state.rb +182 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/class_state.rb +12 -3
- data/lib/kuniri/state_machine/OO_structured_fsm/conditional_state.rb +11 -68
- data/lib/kuniri/state_machine/OO_structured_fsm/constructor_state.rb +7 -52
- data/lib/kuniri/state_machine/OO_structured_fsm/function_behaviour_state.rb +86 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/include_state.rb +2 -3
- data/lib/kuniri/state_machine/OO_structured_fsm/method_state.rb +8 -50
- data/lib/kuniri/state_machine/OO_structured_fsm/oo_structured_state.rb +6 -1
- data/lib/kuniri/state_machine/OO_structured_fsm/repetition_state.rb +10 -59
- data/lib/kuniri/state_machine/OO_structured_fsm/token_state_machine.rb +4 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/variable_state.rb +0 -1
- data/lib/kuniri/version.rb +1 -1
- data/other/analyseFile.asta +0 -0
- data/spec/core/kuniri_spec.rb +2 -1
- data/spec/core/setting_spec.rb +35 -61
- data/spec/language/abstract_container/aggregation_spec.rb +13 -0
- data/spec/language/abstract_container/extern_requirement_spec.rb +13 -0
- data/spec/language/container_data/structured_and_oo/aggregation_data_spec.rb +29 -0
- data/spec/language/container_data/structured_and_oo/attribute_data_spec.rb +9 -2
- data/spec/language/container_data/structured_and_oo/class_data_spec.rb +1 -46
- data/spec/language/container_data/structured_and_oo/constructor_data_spec.rb +32 -2
- data/spec/language/container_data/structured_and_oo/extern_requirement_data_spec.rb +31 -7
- data/spec/language/container_data/structured_and_oo/{file_element_spec.rb → file_element_data_spec.rb} +21 -5
- data/spec/language/container_data/structured_and_oo/function_abstract_spec.rb +213 -0
- data/spec/language/container_data/structured_and_oo/function_data_spec.rb +31 -2
- data/spec/language/container_data/structured_and_oo/manager_basic_structure_data_spec.rb +150 -0
- data/spec/language/container_data/structured_and_oo/method_data_spec.rb +80 -0
- data/spec/language/container_data/structured_and_oo/module_namespace_spec.rb +7 -1
- data/spec/language/container_data/structured_and_oo/variable_global_data_spec.rb +9 -0
- data/spec/language/language_factory_spec.rb +1 -1
- data/spec/language/language_spec.rb +46 -9
- data/spec/language/ruby/aggregation_ruby_spec.rb +80 -0
- data/spec/language/ruby/class_ruby_spec.rb +66 -6
- data/spec/language/ruby/constructor_ruby_spec.rb +1 -1
- data/spec/language/ruby/end_block_ruby_spec.rb +11 -0
- data/spec/language/ruby/extern_requirement_ruby_spec.rb +59 -0
- data/spec/language/ruby/function_behavior_ruby_spec.rb +54 -2
- data/spec/language/ruby/global_test/.kuniri.yml +4 -0
- data/spec/language/ruby/global_test/complete_class_ruby_spec.rb +161 -0
- data/spec/language/ruby/global_test/conditional/.kuniri.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri1.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri2.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri3.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri4.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri5.yml +4 -0
- data/spec/language/ruby/global_test/conditional/.kuniri6.yml +4 -0
- data/spec/language/ruby/global_test/conditional/a_lot_of_conditionals_spec.rb +92 -0
- data/spec/language/ruby/global_test/conditional/constructor_very_mix_conditional_spec.rb +105 -0
- data/spec/language/ruby/global_test/conditional/function_with_conditional_spec.rb +94 -0
- data/spec/language/ruby/global_test/conditional/function_with_nested_conditional_spec.rb +56 -0
- data/spec/language/ruby/global_test/conditional/method_very_mix_conditional_spec.rb +109 -0
- data/spec/language/ruby/global_test/conditional/very_deep_conditional_structure_spec.rb +61 -0
- data/spec/language/ruby/global_test/conditional/very_mix_conditional_spec.rb +105 -0
- data/spec/language/ruby/global_test/conditionalAndRepetition/.kuniri.yml +4 -0
- data/spec/language/ruby/global_test/conditionalAndRepetition/mix_conditional_repetition_spec.rb +57 -0
- data/spec/language/ruby/global_test/repetition/.kuniri.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri2.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri3.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri4.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri5.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri6.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri7.yml +4 -0
- data/spec/language/ruby/global_test/repetition/.kuniri8.yml +4 -0
- data/spec/language/ruby/global_test/repetition/complete_class_integrity.rb +41 -0
- data/spec/language/ruby/global_test/repetition/complete_class_until_loop_spec.rb +42 -0
- data/spec/language/ruby/global_test/repetition/complete_class_while_loop_spec.rb +41 -0
- data/spec/language/ruby/global_test/repetition/complete_class_with_repetition_spec.rb +42 -0
- data/spec/language/ruby/global_test/repetition/constructor_with_mix_repetition_spec.rb +57 -0
- data/spec/language/ruby/global_test/repetition/method_with_mix_repetition_spec.rb +59 -0
- data/spec/language/ruby/global_test/repetition/very_mix_repetition_spec.rb +61 -0
- data/spec/language/ruby/global_test/repetition/very_nested_repetition_spec.rb +65 -0
- data/spec/language/ruby/method_ruby_spec.rb +52 -0
- data/spec/language/ruby/repetition_ruby_spec.rb +175 -8
- data/spec/language/ruby/ruby_syntax_spec.rb +213 -84
- data/spec/parser/output_factory_spec.rb +32 -0
- data/spec/parser/output_format_spec.rb +83 -0
- data/spec/parser/parser_spec.rb +7 -0
- data/spec/parser/xmlSchemaValidate/.kuniri1.yml +3 -0
- data/spec/parser/xmlSchemaValidate/.kuniri2.yml +3 -0
- data/spec/parser/xmlSchemaValidate/.kuniri3.yml +3 -0
- data/spec/parser/xmlSchemaValidate/class_data.xsd +99 -0
- data/spec/parser/xmlSchemaValidate/fullCodeTwo.xsd +119 -0
- data/spec/parser/xmlSchemaValidate/fullCodeWithComments.xsd +146 -0
- data/spec/parser/xmlSchemaValidate/simpleFunction.xsd +25 -0
- data/spec/parser/xmlSchemaValidate/validate_xml_spec.rb +52 -0
- data/spec/parser/xml_builder_engine_spec.rb +258 -0
- data/spec/parser/xml_output_format_spec.rb +274 -0
- data/spec/samples/rubySyntaxParts/aggregation/classAggregation.rb +37 -0
- data/spec/samples/rubySyntaxParts/aggregation/constructorAggregation.rb +36 -0
- data/spec/samples/rubySyntaxParts/aggregation/methodAggregation.rb +36 -0
- data/spec/samples/rubySyntaxParts/aggregation/multipleAggregation.rb +59 -0
- data/spec/samples/rubySyntaxParts/comment/simple_multiple_line_comment_class.rb +7 -0
- data/spec/samples/rubySyntaxParts/comment/simple_single_line_comment_class.rb +2 -1
- data/spec/samples/rubySyntaxParts/conditionalStatment/aLotOfConditionals.rb +42 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/commonCasesOfConditionals.rb +47 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/constructorConditional.rb +1 -1
- data/spec/samples/rubySyntaxParts/conditionalStatment/constructorMixConditional.rb +41 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/methodMixConditional.rb +41 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/mixConditionalWithRepetition.rb +20 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/nestedConditional.rb +61 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/veryDeepConditionalStructure.rb +48 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/veryMixConditional.rb +37 -0
- data/spec/samples/rubySyntaxParts/fullCode/fullCodeTwo.rb +56 -0
- data/spec/samples/rubySyntaxParts/fullCode/fullCodeWithComments.rb +64 -0
- data/spec/samples/rubySyntaxParts/fullCode/simpleFullCode.rb +9 -1
- data/spec/samples/rubySyntaxParts/method/simpleMethod.rb +2 -0
- data/spec/samples/rubySyntaxParts/repetition/beginWithWhileLoopInClass.rb +10 -0
- data/spec/samples/rubySyntaxParts/repetition/constructorWithMixRepetition.rb +22 -0
- data/spec/samples/rubySyntaxParts/repetition/forLoopInClass.rb +7 -0
- data/spec/samples/rubySyntaxParts/repetition/methodWithMixRepetition.rb +19 -0
- data/spec/samples/rubySyntaxParts/repetition/mixConditionalRepetition.rb +17 -0
- data/spec/samples/rubySyntaxParts/repetition/untilLoopInClass.rb +16 -0
- data/spec/samples/rubySyntaxParts/repetition/veryMixRepetition.rb +28 -0
- data/spec/samples/rubySyntaxParts/repetition/veryNestedRepetition.rb +17 -0
- data/spec/samples/rubySyntaxParts/repetition/whileLoopInClass.rb +12 -0
- data/spec/state_machine/OO_structured_fsm/aggregation_state_spec.rb +67 -0
- data/spec/state_machine/OO_structured_fsm/class_state_spec.rb +15 -0
- data/spec/state_machine/OO_structured_fsm/conditional_state_spec.rb +64 -0
- data/spec/state_machine/OO_structured_fsm/include_state_spec.rb +3 -3
- data/spec/state_machine/OO_structured_fsm/method_state_spec.rb +18 -0
- data/spec/state_machine/OO_structured_fsm/repetition_state_spec.rb +27 -0
- metadata +195 -28
- data/lib/kuniri/core/configuration/monitor_available.rb +0 -13
- data/lib/kuniri/language/abstract_container/structured_and_oo/constructor.rb +0 -52
- data/lib/kuniri/parser/parser_xml.rb +0 -128
- data/spec/language/abstract_container/constructor_spec.rb +0 -13
- data/spec/util/html_logger_spec.rb +0 -31
- data/spec/util/logger_spec.rb +0 -20
- data/spec/util/txt_logger_spec.rb +0 -31
|
@@ -7,11 +7,11 @@ module Languages
|
|
|
7
7
|
|
|
8
8
|
public
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
# Initialize function data based on name.
|
|
11
|
+
# @param pFunctionName name string.
|
|
12
12
|
def initialize(pFunctionName)
|
|
13
13
|
super(pFunctionName)
|
|
14
|
-
@
|
|
14
|
+
@type = GLOBAL_FUNCTION_DATA
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# class
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative 'basic_data'
|
|
2
|
+
require_relative 'conditional_data'
|
|
3
|
+
require_relative 'repetition_data'
|
|
4
|
+
|
|
5
|
+
module Languages
|
|
6
|
+
|
|
7
|
+
# ManagerBasicStructureData Class responsible for management conditionals
|
|
8
|
+
# and repetition.
|
|
9
|
+
class ManagerBasicStructureData < Languages::BasicData
|
|
10
|
+
|
|
11
|
+
public
|
|
12
|
+
|
|
13
|
+
attr_accessor :basicStructure
|
|
14
|
+
|
|
15
|
+
def initialize
|
|
16
|
+
@basicStructure = []
|
|
17
|
+
@currentLevel = 0
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Add conditional to basicStructure
|
|
21
|
+
# @param pConditional ConditionalData to add inside basicStructure
|
|
22
|
+
def add_conditional(pConditional)
|
|
23
|
+
return nil unless pConditional.is_a?(Languages::ConditionalData)
|
|
24
|
+
pConditional.level = @currentLevel
|
|
25
|
+
@basicStructure.push(pConditional)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Add repetition to basicStructure
|
|
29
|
+
# @param pRepetition RepetitionData to add inside basicStrure
|
|
30
|
+
def add_repetition(pRepetition)
|
|
31
|
+
return nil unless pRepetition.is_a?(Languages::RepetitionData)
|
|
32
|
+
pRepetition.level = @currentLevel
|
|
33
|
+
@basicStructure.push(pRepetition)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Up current level
|
|
37
|
+
def up_level
|
|
38
|
+
@currentLevel -= 1 if @currentLevel > 0
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Add nested level, basically, if we have a lot of nested conditional or
|
|
42
|
+
# repetition we add one level for each nest.
|
|
43
|
+
def down_level
|
|
44
|
+
@currentLevel += 1
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
@currentLevel
|
|
50
|
+
|
|
51
|
+
# End class
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# End module
|
|
55
|
+
end
|
|
@@ -7,10 +7,11 @@ module Languages
|
|
|
7
7
|
|
|
8
8
|
public
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def initialize(
|
|
13
|
-
super(
|
|
10
|
+
# Initialize Method object, based on name.
|
|
11
|
+
# @param pMethodName Method name.
|
|
12
|
+
def initialize(pMethodName)
|
|
13
|
+
super(pMethodName)
|
|
14
|
+
@type = METHOD_DATA
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
# Class
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
require_relative '
|
|
1
|
+
require_relative 'basic_structure'
|
|
2
2
|
|
|
3
3
|
module Languages
|
|
4
4
|
|
|
5
5
|
# Class responsible for handling repetition data
|
|
6
|
-
class RepetitionData < Languages::
|
|
7
|
-
|
|
8
|
-
public
|
|
9
|
-
|
|
10
|
-
attr_accessor :type
|
|
11
|
-
attr_accessor :expression
|
|
12
|
-
|
|
13
|
-
def initialize
|
|
14
|
-
@name = "nothing"
|
|
15
|
-
@type = "none"
|
|
16
|
-
@expression = "empty"
|
|
17
|
-
end
|
|
6
|
+
class RepetitionData < Languages::BasicStructure
|
|
18
7
|
|
|
19
8
|
# class
|
|
20
9
|
end
|
|
@@ -11,6 +11,7 @@ require_relative '../state_machine/OO_structured_fsm/oo_structured_state'
|
|
|
11
11
|
require_relative '../state_machine/OO_structured_fsm/conditional_state'
|
|
12
12
|
require_relative '../state_machine/OO_structured_fsm/repetition_state'
|
|
13
13
|
require_relative '../state_machine/OO_structured_fsm/comment_state'
|
|
14
|
+
require_relative '../state_machine/OO_structured_fsm/aggregation_state'
|
|
14
15
|
|
|
15
16
|
# Module that keeps the language syntax.
|
|
16
17
|
module Languages
|
|
@@ -37,6 +38,7 @@ module Languages
|
|
|
37
38
|
attr_reader :conditionalState
|
|
38
39
|
attr_reader :repetitionState
|
|
39
40
|
attr_reader :commentState
|
|
41
|
+
attr_reader :aggregationState
|
|
40
42
|
|
|
41
43
|
attr_reader :externRequirementHandler
|
|
42
44
|
attr_reader :variableHandler
|
|
@@ -50,6 +52,9 @@ module Languages
|
|
|
50
52
|
attr_reader :conditionalHandler
|
|
51
53
|
attr_reader :repetitionHandler
|
|
52
54
|
attr_reader :commentHandler
|
|
55
|
+
attr_reader :aggregationHandler
|
|
56
|
+
|
|
57
|
+
attr_reader :metadata
|
|
53
58
|
|
|
54
59
|
attr_accessor :fileElements
|
|
55
60
|
|
|
@@ -57,6 +62,8 @@ module Languages
|
|
|
57
62
|
# conditional information and repetition data.
|
|
58
63
|
attr_accessor :flagFunctionBehaviour
|
|
59
64
|
|
|
65
|
+
attr_reader :countNestedCondLoop
|
|
66
|
+
|
|
60
67
|
attr_accessor :string_comment_to_transfer
|
|
61
68
|
|
|
62
69
|
# This method initialize all the needed states of state machine.
|
|
@@ -78,6 +85,8 @@ module Languages
|
|
|
78
85
|
@repetitionState =
|
|
79
86
|
StateMachine::OOStructuredFSM::RepetitionState.new(self)
|
|
80
87
|
@commentState = StateMachine::OOStructuredFSM::CommentState.new(self)
|
|
88
|
+
@aggregationState =
|
|
89
|
+
StateMachine::OOStructuredFSM::AggregationState.new(self)
|
|
81
90
|
|
|
82
91
|
@state = @idleState
|
|
83
92
|
@previousState = []
|
|
@@ -85,6 +94,7 @@ module Languages
|
|
|
85
94
|
|
|
86
95
|
@fileElements = []
|
|
87
96
|
@flagFunctionBehaviour = nil
|
|
97
|
+
@countNestedCondLoop = 0
|
|
88
98
|
|
|
89
99
|
@string_comment_to_transfer = ""
|
|
90
100
|
end
|
|
@@ -138,16 +148,6 @@ module Languages
|
|
|
138
148
|
@state = @previousState.pop
|
|
139
149
|
end
|
|
140
150
|
|
|
141
|
-
# TODO: REMOVE IT
|
|
142
|
-
def get_name
|
|
143
|
-
return @name
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# TODO: REMOVE IT
|
|
147
|
-
def get_path
|
|
148
|
-
return @path
|
|
149
|
-
end
|
|
150
|
-
|
|
151
151
|
# Handling line
|
|
152
152
|
def handle_line(pLine)
|
|
153
153
|
@state.handle_line
|
|
@@ -204,17 +204,43 @@ module Languages
|
|
|
204
204
|
@state.conditional_capture
|
|
205
205
|
end
|
|
206
206
|
|
|
207
|
+
# Aggregation state.
|
|
208
|
+
def aggregation_capture
|
|
209
|
+
@state.aggregation_capture
|
|
210
|
+
end
|
|
211
|
+
|
|
207
212
|
# keep track of state.
|
|
208
213
|
def set_state (pState)
|
|
209
214
|
@previousState.push(@state)
|
|
210
215
|
@state = pState
|
|
211
216
|
end
|
|
212
217
|
|
|
218
|
+
# Increase nested level
|
|
219
|
+
def moreNested
|
|
220
|
+
@countNestedCondLoop += 1
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Reduce nested level
|
|
224
|
+
def lessNested
|
|
225
|
+
@countNestedCondLoop -= 1 if @countNestedCondLoop > 0
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# Verify if is nested or not
|
|
229
|
+
def isNested?
|
|
230
|
+
return true if @countNestedCondLoop > 0
|
|
231
|
+
return false
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# Reset nested structure
|
|
235
|
+
def resetNested
|
|
236
|
+
@countNestedCondLoop = 0
|
|
237
|
+
end
|
|
238
|
+
|
|
213
239
|
protected
|
|
214
240
|
|
|
215
241
|
@languageType
|
|
216
242
|
@source
|
|
217
|
-
|
|
243
|
+
|
|
218
244
|
# End class
|
|
219
245
|
end
|
|
220
246
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Languages
|
|
2
|
+
|
|
3
|
+
# Keep important information for second parser.
|
|
4
|
+
class Metadata
|
|
5
|
+
|
|
6
|
+
public
|
|
7
|
+
|
|
8
|
+
private_class_method :new
|
|
9
|
+
attr_accessor :allClasses # !@attribute All classes to be analysed.
|
|
10
|
+
attr_accessor :allAggregations # !@attribute All aggregation in classes.
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@allClasses = []
|
|
14
|
+
@allAggregations = []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def Metadata.create
|
|
18
|
+
@@metadata = new unless @@metadata
|
|
19
|
+
return @@metadata
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
@@metadata = nil
|
|
25
|
+
|
|
26
|
+
# Class
|
|
27
|
+
end
|
|
28
|
+
# Module
|
|
29
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require_relative '../abstract_container/structured_and_oo/aggregation'
|
|
2
|
+
require_relative '../../core/setting'
|
|
3
|
+
require_relative '../container_data/structured_and_oo/aggregation_data'
|
|
4
|
+
|
|
5
|
+
module Languages
|
|
6
|
+
|
|
7
|
+
module Ruby
|
|
8
|
+
|
|
9
|
+
# Ruby Handling Ruby aggregation
|
|
10
|
+
class AggregationRuby < Languages::Aggregation
|
|
11
|
+
|
|
12
|
+
public
|
|
13
|
+
|
|
14
|
+
# @param pLine Verify if line has a ruby aggregation.
|
|
15
|
+
# @return Return string or nil.
|
|
16
|
+
def get_aggregation(pLine)
|
|
17
|
+
result = detect_aggregation(pLine)
|
|
18
|
+
return nil unless result
|
|
19
|
+
return Languages::AggregationData.new(result)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
# Override
|
|
25
|
+
def detect_aggregation(pLine)
|
|
26
|
+
regexExp = /(\w*)\s*\.\s*new[\n|\s|\(]+/
|
|
27
|
+
return nil unless pLine =~ regexExp
|
|
28
|
+
return pLine[regexExp, 1]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#Class
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Ruby
|
|
35
|
+
end
|
|
36
|
+
#Language
|
|
37
|
+
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require_relative '../abstract_container/structured_and_oo/attribute'
|
|
2
2
|
require_relative '../container_data/structured_and_oo/attribute_data'
|
|
3
|
-
require_relative '../../util/html_logger'
|
|
4
3
|
require_relative '../../core/setting'
|
|
5
4
|
|
|
6
5
|
module Languages
|
|
@@ -13,19 +12,16 @@ module Languages
|
|
|
13
12
|
public
|
|
14
13
|
|
|
15
14
|
def initialize
|
|
16
|
-
@log = @settings = Kuniri::Setting.create.log
|
|
17
15
|
@attributeList = []
|
|
18
16
|
end
|
|
19
17
|
|
|
20
|
-
# Get ruby attribute.
|
|
18
|
+
# Get ruby attribute.
|
|
21
19
|
# @param pLine Verify if line has a ruby attribute.
|
|
22
20
|
# @return Return AttributeData or nil.
|
|
23
21
|
def get_attribute(pLine)
|
|
24
22
|
result = detect_attribute(pLine)
|
|
25
23
|
return nil unless result
|
|
26
24
|
|
|
27
|
-
@log.write_log("Info: Prepare to get attribute.")
|
|
28
|
-
|
|
29
25
|
listOfAttributes = []
|
|
30
26
|
|
|
31
27
|
# Has comma? Split string by comma
|
|
@@ -34,13 +30,10 @@ module Languages
|
|
|
34
30
|
# Separated by comma, equal or the common case
|
|
35
31
|
if result.scan(/,/).count >= 1
|
|
36
32
|
listOfAttributes = handle_multiple_declaration_with_comma(result)
|
|
37
|
-
@log.write_log("Debug: Declared with comma: #{listOfAttributes}")
|
|
38
33
|
elsif result.scan(/=/).count > 1
|
|
39
34
|
listOfAttributes = handle_multiple_declaration_with_equal(result)
|
|
40
|
-
@log.write_log("Debug: separed by comma: #{listOfAttributes}")
|
|
41
35
|
else
|
|
42
36
|
listOfAttributes = handle_line_declaration(result)
|
|
43
|
-
@log.write_log("Debug: One line declaration #{listOfAttributes}")
|
|
44
37
|
end
|
|
45
38
|
|
|
46
39
|
return listOfAttributes
|
|
@@ -71,59 +64,51 @@ module Languages
|
|
|
71
64
|
|
|
72
65
|
# Override
|
|
73
66
|
def handle_multiple_declaration_with_comma(pString)
|
|
74
|
-
|
|
75
|
-
pString = pString.split(",")
|
|
76
|
-
pString.each do |variable|
|
|
77
|
-
return nil if variable.scan(/=/).count > 1
|
|
78
|
-
|
|
67
|
+
return handle_multiple_declaration(pString, ",") do |variable|
|
|
79
68
|
variable = variable.scan(/.*=/).join("") if variable =~ /.*=/
|
|
80
|
-
|
|
81
|
-
return nil if variable =~ /\./
|
|
82
|
-
|
|
83
|
-
variable = prepare_final_string(variable)
|
|
84
|
-
attribute = Languages::AttributeData.new(variable)
|
|
85
|
-
listOfAttributes.push(attribute)
|
|
69
|
+
variable
|
|
86
70
|
end
|
|
87
|
-
|
|
88
|
-
return listOfAttributes
|
|
89
71
|
end
|
|
90
72
|
|
|
91
73
|
# Override
|
|
92
74
|
def handle_multiple_declaration_with_equal(pString)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
pString.each do |variable|
|
|
96
|
-
return nil if variable =~ /\./
|
|
75
|
+
return handle_multiple_declaration(pString, "="){ |variable| variable }
|
|
76
|
+
end
|
|
97
77
|
|
|
98
|
-
|
|
99
|
-
attribute = Languages::AttributeData.new(variable)
|
|
100
|
-
listOfAttributes.push(attribute)
|
|
101
|
-
end
|
|
78
|
+
private
|
|
102
79
|
|
|
103
|
-
|
|
104
|
-
end
|
|
80
|
+
@attributeList
|
|
105
81
|
|
|
106
|
-
# Override
|
|
107
82
|
def handle_line_declaration(pString)
|
|
108
|
-
|
|
83
|
+
return handle_line(pString){ |pString| pString }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def handle_line(pString)
|
|
109
87
|
if pString =~ /=/
|
|
110
88
|
pString = pString.scan(/.*=/).join("")
|
|
111
89
|
return nil if pString =~ /\./
|
|
112
90
|
end
|
|
113
91
|
|
|
92
|
+
pString = yield(pString)
|
|
93
|
+
|
|
114
94
|
return nil if pString =~ /\./
|
|
115
95
|
|
|
116
96
|
pString = prepare_final_string(pString)
|
|
117
97
|
attribute = Languages::AttributeData.new(pString)
|
|
118
|
-
listOfAttributes.push(attribute)
|
|
119
98
|
|
|
120
|
-
return
|
|
99
|
+
return [attribute]
|
|
121
100
|
end
|
|
122
101
|
|
|
123
|
-
|
|
102
|
+
def handle_multiple_declaration(pString, pSplitChar)
|
|
103
|
+
listOfAttributes = []
|
|
104
|
+
pString = pString.split(pSplitChar)
|
|
105
|
+
pString.each do |variable|
|
|
106
|
+
attribute = handle_line(variable) { |pString| yield(pString) }
|
|
107
|
+
listOfAttributes.concat(attribute) if attribute
|
|
108
|
+
end
|
|
124
109
|
|
|
125
|
-
|
|
126
|
-
|
|
110
|
+
return listOfAttributes
|
|
111
|
+
end
|
|
127
112
|
|
|
128
113
|
#Class
|
|
129
114
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require_relative '../abstract_container/structured_and_oo/class'
|
|
2
2
|
require_relative '../container_data/structured_and_oo/class_data'
|
|
3
|
-
require_relative '../../util/html_logger'
|
|
4
3
|
require_relative '../../core/setting'
|
|
5
4
|
|
|
6
5
|
module Languages
|
|
@@ -13,7 +12,6 @@ module Languages
|
|
|
13
12
|
public
|
|
14
13
|
|
|
15
14
|
def initialize
|
|
16
|
-
@log = @settings = Kuniri::Setting.create.log
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
# Get ruby class.
|
|
@@ -22,8 +20,6 @@ module Languages
|
|
|
22
20
|
result = detect_class(pLine)
|
|
23
21
|
return nil unless result
|
|
24
22
|
|
|
25
|
-
@log.write_log("Info: Detect class")
|
|
26
|
-
|
|
27
23
|
classCaptured = Languages::ClassData.new
|
|
28
24
|
|
|
29
25
|
inheritance = get_inheritance(result)
|
|
@@ -32,8 +28,6 @@ module Languages
|
|
|
32
28
|
result = prepare_final_string(result)
|
|
33
29
|
classCaptured.name = result
|
|
34
30
|
|
|
35
|
-
@log.write_log("Debug: Class: #{classCaptured.name}")
|
|
36
|
-
|
|
37
31
|
return classCaptured
|
|
38
32
|
end
|
|
39
33
|
|
|
@@ -49,7 +43,7 @@ module Languages
|
|
|
49
43
|
# Override
|
|
50
44
|
def get_inheritance(pString)
|
|
51
45
|
if pString =~ /</
|
|
52
|
-
partial = pString.scan(
|
|
46
|
+
partial = pString.scan(/<\s*(\w+)/)
|
|
53
47
|
return remove_unnecessary_information(partial)
|
|
54
48
|
end
|
|
55
49
|
return nil
|
|
@@ -71,11 +65,9 @@ module Languages
|
|
|
71
65
|
|
|
72
66
|
private
|
|
73
67
|
|
|
74
|
-
@log
|
|
75
|
-
|
|
76
68
|
# class
|
|
77
69
|
end
|
|
78
|
-
|
|
70
|
+
|
|
79
71
|
# Ruby
|
|
80
72
|
end
|
|
81
73
|
|