kuniri 0.0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|