kuniri 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +43 -0
- data/.rspec +2 -0
- data/.travis.yml +18 -0
- data/.yardopts +1 -0
- data/COPYING +661 -0
- data/Gemfile +14 -0
- data/Guardfile +8 -0
- data/README.md +102 -0
- data/Rakefile +114 -0
- data/bin/kuniri +53 -0
- data/data/attribute_lang.rb +131 -0
- data/data/class_lang.rb +77 -0
- data/data/conditional_lang.rb +71 -0
- data/data/constructor_lang.rb +34 -0
- data/data/end_block_lang.rb +30 -0
- data/data/extern_requirement_lang.rb +45 -0
- data/data/function_behavior_lang.rb +113 -0
- data/data/lang_syntax.rb +111 -0
- data/data/module_namespace_lang.rb +43 -0
- data/data/repetition_lang.rb +62 -0
- data/data/token_lang.rb +55 -0
- data/data/variable_global_lang.rb +118 -0
- data/kuniri.gemspec +24 -0
- data/lib/kuniri/core/configuration/language_available.rb +7 -0
- data/lib/kuniri/core/configuration/log_available.rb +7 -0
- data/lib/kuniri/core/configuration/monitor_available.rb +13 -0
- data/lib/kuniri/core/kuniri.rb +78 -0
- data/lib/kuniri/core/setting.rb +143 -0
- data/lib/kuniri/error/configuration_file_error.rb +12 -0
- data/lib/kuniri/error/language_error.rb +12 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/attribute.rb +73 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/class.rb +51 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/comment.rb +57 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/conditional.rb +42 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/constructor.rb +52 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/end_block.rb +27 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/extern_requirement.rb +36 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/function_behavior.rb +55 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/module_namespace.rb +36 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/repetition.rb +42 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/variable_behaviour.rb +53 -0
- data/lib/kuniri/language/abstract_container/structured_and_oo/variable_global.rb +67 -0
- data/lib/kuniri/language/container_data/structured_and_oo/attribute_data.rb +26 -0
- data/lib/kuniri/language/container_data/structured_and_oo/basic_data.rb +18 -0
- data/lib/kuniri/language/container_data/structured_and_oo/class_data.rb +77 -0
- data/lib/kuniri/language/container_data/structured_and_oo/conditional_data.rb +23 -0
- data/lib/kuniri/language/container_data/structured_and_oo/constructor_data.rb +18 -0
- data/lib/kuniri/language/container_data/structured_and_oo/extern_requirement_data.rb +26 -0
- data/lib/kuniri/language/container_data/structured_and_oo/file_element.rb +77 -0
- data/lib/kuniri/language/container_data/structured_and_oo/function_abstract.rb +52 -0
- data/lib/kuniri/language/container_data/structured_and_oo/function_data.rb +21 -0
- data/lib/kuniri/language/container_data/structured_and_oo/method_data.rb +20 -0
- data/lib/kuniri/language/container_data/structured_and_oo/module_namespace_data.rb +18 -0
- data/lib/kuniri/language/container_data/structured_and_oo/repetition_data.rb +23 -0
- data/lib/kuniri/language/container_data/structured_and_oo/variable_global_data.rb +22 -0
- data/lib/kuniri/language/language.rb +222 -0
- data/lib/kuniri/language/language_factory.rb +48 -0
- data/lib/kuniri/language/ruby/attribute_ruby.rb +134 -0
- data/lib/kuniri/language/ruby/class_ruby.rb +83 -0
- data/lib/kuniri/language/ruby/comment_ruby.rb +84 -0
- data/lib/kuniri/language/ruby/conditional_ruby.rb +77 -0
- data/lib/kuniri/language/ruby/constructor_ruby.rb +36 -0
- data/lib/kuniri/language/ruby/end_block_ruby.rb +33 -0
- data/lib/kuniri/language/ruby/extern_requirement_ruby.rb +49 -0
- data/lib/kuniri/language/ruby/function_behavior_ruby.rb +120 -0
- data/lib/kuniri/language/ruby/module_namespace_ruby.rb +47 -0
- data/lib/kuniri/language/ruby/repetition_ruby.rb +68 -0
- data/lib/kuniri/language/ruby/ruby_syntax.rb +117 -0
- data/lib/kuniri/language/ruby/token_ruby.rb +59 -0
- data/lib/kuniri/language/ruby/variable_behaviour_ruby.rb +83 -0
- data/lib/kuniri/language/ruby/variable_global_ruby.rb +123 -0
- data/lib/kuniri/parser/parser.rb +45 -0
- data/lib/kuniri/parser/parser_xml.rb +128 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/attribute_state.rb +51 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/class_state.rb +94 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/comment_state.rb +76 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/conditional_state.rb +92 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/constructor_state.rb +71 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/function_state.rb +82 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/idle_state.rb +80 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/include_state.rb +59 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/method_state.rb +69 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/module_state.rb +79 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/oo_structured_state.rb +92 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/repetition_state.rb +85 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/token_state_machine.rb +8 -0
- data/lib/kuniri/state_machine/OO_structured_fsm/variable_state.rb +49 -0
- data/lib/kuniri/util/html_logger.rb +41 -0
- data/lib/kuniri/util/logger.rb +34 -0
- data/lib/kuniri/util/txt_logger.rb +29 -0
- data/lib/kuniri/version.rb +3 -0
- data/lib/kuniri.rb +5 -0
- data/other/analyseFile.asta +0 -0
- data/spec/core/kuniri_spec.rb +14 -0
- data/spec/core/setting_spec.rb +114 -0
- data/spec/language/abstract_container/attribute_spec.rb +13 -0
- data/spec/language/abstract_container/class_spec.rb +13 -0
- data/spec/language/abstract_container/comment_spec.rb +31 -0
- data/spec/language/abstract_container/conditional_spec.rb +13 -0
- data/spec/language/abstract_container/constructor_spec.rb +13 -0
- data/spec/language/abstract_container/end_block_spec.rb +14 -0
- data/spec/language/abstract_container/module_namespace_spec.rb +13 -0
- data/spec/language/abstract_container/repetition_spec.rb +13 -0
- data/spec/language/container_data/structured_and_oo/attribute_data_spec.rb +32 -0
- data/spec/language/container_data/structured_and_oo/class_data_spec.rb +121 -0
- data/spec/language/container_data/structured_and_oo/conditional_data_spec.rb +34 -0
- data/spec/language/container_data/structured_and_oo/constructor_data_spec.rb +46 -0
- data/spec/language/container_data/structured_and_oo/extern_requirement_data_spec.rb +26 -0
- data/spec/language/container_data/structured_and_oo/file_element_spec.rb +91 -0
- data/spec/language/container_data/structured_and_oo/function_data_spec.rb +22 -0
- data/spec/language/container_data/structured_and_oo/module_namespace_spec.rb +20 -0
- data/spec/language/container_data/structured_and_oo/repetition_data_spec.rb +34 -0
- data/spec/language/container_data/structured_and_oo/variable_global_data_spec.rb +39 -0
- data/spec/language/language_factory_spec.rb +64 -0
- data/spec/language/language_spec.rb +74 -0
- data/spec/language/ruby/attribute_ruby_spec.rb +126 -0
- data/spec/language/ruby/class_ruby_spec.rb +102 -0
- data/spec/language/ruby/comment_ruby_spec.rb +78 -0
- data/spec/language/ruby/conditional_ruby_spec.rb +106 -0
- data/spec/language/ruby/constructor_ruby_spec.rb +57 -0
- data/spec/language/ruby/end_block_ruby_spec.rb +62 -0
- data/spec/language/ruby/function_behavior_ruby_spec.rb +246 -0
- data/spec/language/ruby/module_namespace_ruby_spec.rb +55 -0
- data/spec/language/ruby/repetition_ruby_spec.rb +33 -0
- data/spec/language/ruby/ruby_syntax_spec.rb +482 -0
- data/spec/language/ruby/variable_ruby_spec.rb +134 -0
- data/spec/parser/parser_spec.rb +25 -0
- data/spec/samples/rubySyntaxParts/attribute/simpleAttribute.rb +15 -0
- data/spec/samples/rubySyntaxParts/class/simpleClass.rb +19 -0
- data/spec/samples/rubySyntaxParts/comment/simple_multiple_line_comment_class.rb +33 -0
- data/spec/samples/rubySyntaxParts/comment/simple_multiple_line_comment_global.rb +20 -0
- data/spec/samples/rubySyntaxParts/comment/simple_single_line_comment_class.rb +23 -0
- data/spec/samples/rubySyntaxParts/comment/simple_single_line_comment_global.rb +16 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/constructorConditional.rb +28 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/methodConditional.rb +42 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/nestedConditional.rb +0 -0
- data/spec/samples/rubySyntaxParts/conditionalStatment/simpleConditional.rb +43 -0
- data/spec/samples/rubySyntaxParts/constructor/simpleConstructor.rb +27 -0
- data/spec/samples/rubySyntaxParts/extern/multipleLineExternRequirement.rb +0 -0
- data/spec/samples/rubySyntaxParts/extern/requireRelative.rb +6 -0
- data/spec/samples/rubySyntaxParts/extern/simpleExternRequirement.rb +14 -0
- data/spec/samples/rubySyntaxParts/fullCode/simpleCodeWithConditional.rb +18 -0
- data/spec/samples/rubySyntaxParts/fullCode/simpleFullCode.rb +19 -0
- data/spec/samples/rubySyntaxParts/function/simpleFunction.rb +29 -0
- data/spec/samples/rubySyntaxParts/method/simpleMethod.rb +13 -0
- data/spec/samples/rubySyntaxParts/module/simpleModule.rb +12 -0
- data/spec/samples/rubySyntaxParts/repetition/simpleRepetition.rb +28 -0
- data/spec/samples/rubySyntaxParts/variable/simpleVariable.rb +13 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/state_machine/OO_structured_fsm/attribute_state_spec.rb +44 -0
- data/spec/state_machine/OO_structured_fsm/class_state_spec.rb +90 -0
- data/spec/state_machine/OO_structured_fsm/comment_state_spec.rb +30 -0
- data/spec/state_machine/OO_structured_fsm/conditional_state_spec.rb +83 -0
- data/spec/state_machine/OO_structured_fsm/constructor_state_spec.rb +48 -0
- data/spec/state_machine/OO_structured_fsm/function_state_spec.rb +41 -0
- data/spec/state_machine/OO_structured_fsm/idle_state_spec.rb +101 -0
- data/spec/state_machine/OO_structured_fsm/include_state_spec.rb +62 -0
- data/spec/state_machine/OO_structured_fsm/method_state_spec.rb +42 -0
- data/spec/state_machine/OO_structured_fsm/module_state_spec.rb +54 -0
- data/spec/state_machine/OO_structured_fsm/oo_structured_state_spec.rb +0 -0
- data/spec/state_machine/OO_structured_fsm/repetition_state_spec.rb +83 -0
- data/spec/state_machine/OO_structured_fsm/variable_state_spec.rb +40 -0
- data/spec/util/html_logger_spec.rb +31 -0
- data/spec/util/logger_spec.rb +20 -0
- data/spec/util/txt_logger_spec.rb +31 -0
- metadata +326 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
module Languages
|
2
|
+
|
3
|
+
# @abstract This class is an abstraction for handling any element whose the
|
4
|
+
# behaviour is similar to a variable. As an example, we have global
|
5
|
+
# variables and attributes that have some similarities.
|
6
|
+
class VariableBehaviour
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
# Remove unnecessary information from line. For example, remove
|
11
|
+
# everything into parenthesis or line comment.
|
12
|
+
# @param pString String for remove unnecessary information.
|
13
|
+
# @return If match any unnecessary character defined by the programmer
|
14
|
+
# returns the new string, otherwise return the same string.
|
15
|
+
def remove_unnecessary_information(pString)
|
16
|
+
raise NotImplementedError
|
17
|
+
end
|
18
|
+
|
19
|
+
# Prepare final string, before save it in a container data.
|
20
|
+
# @param pLine Line to be inspected.
|
21
|
+
# @return Return a string.
|
22
|
+
def prepare_final_string(pLine)
|
23
|
+
raise NotImplementedError
|
24
|
+
end
|
25
|
+
|
26
|
+
# One common behaviour related with variables, is the multiple
|
27
|
+
# declaration separated by comma. This method is responsible for
|
28
|
+
# handling multiple line declaration separated by comma.
|
29
|
+
# @param pString String to be handled.
|
30
|
+
# @return Return an array with multiple variables.
|
31
|
+
def handle_multiple_declaration_with_comma(pString)
|
32
|
+
raise NotImplementedError
|
33
|
+
end
|
34
|
+
|
35
|
+
# Handling multiple declaration with equal.
|
36
|
+
# @param pString String with multiple declaration.
|
37
|
+
# @return Return an string.
|
38
|
+
def handle_multiple_declaration_with_equal(pString)
|
39
|
+
raise NotImplementedError
|
40
|
+
end
|
41
|
+
|
42
|
+
# Handling line declaration.
|
43
|
+
# @param pString Line with simple declaration.
|
44
|
+
# @return Return a string.
|
45
|
+
def handle_line_declaration(pString)
|
46
|
+
raise NotImplementedError
|
47
|
+
end
|
48
|
+
|
49
|
+
# Class
|
50
|
+
end
|
51
|
+
|
52
|
+
# Language
|
53
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Languages
|
2
|
+
|
3
|
+
# @abstract Any global variable should be handler here.
|
4
|
+
class VariableGlobal
|
5
|
+
|
6
|
+
public
|
7
|
+
|
8
|
+
# This method is the main interface for extract data from specific
|
9
|
+
# code and convert it to a common representation.
|
10
|
+
# @param pLine Line to be inspected.
|
11
|
+
# @return If line has a variable, this method returns an object of
|
12
|
+
# VariableGlobalData. Otherwise returns nil.
|
13
|
+
# @see variable_global_data.rb
|
14
|
+
def get_variable(pLine)
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
# Verify if line has a variable.
|
21
|
+
# @param pLine String to be analysed.
|
22
|
+
# @return Returns a partial string, if it can be a variable. Otherwise
|
23
|
+
# return nil.
|
24
|
+
def detect_variable(pLine)
|
25
|
+
raise NotImplementedError
|
26
|
+
end
|
27
|
+
|
28
|
+
# Remove unnecessary information.
|
29
|
+
# @param pLine String to be improved.
|
30
|
+
# @return Return an partial string, or the same if no work is needed.
|
31
|
+
def remove_unnecessary_information(pLine)
|
32
|
+
raise NotImplementedError
|
33
|
+
end
|
34
|
+
|
35
|
+
# Make some prunes and adjustments in the string.
|
36
|
+
# @param pLine String to be prepared.
|
37
|
+
# @return Return a string.
|
38
|
+
def prepare_final_string(pLine)
|
39
|
+
raise NotImplementedError
|
40
|
+
end
|
41
|
+
|
42
|
+
# Handling multiple line declaration with comma.
|
43
|
+
# @param pString String with multiple declaration with comma.
|
44
|
+
# @return Return a string.
|
45
|
+
def handle_multiple_declaration_with_comma(pString)
|
46
|
+
raise NotImplementedError
|
47
|
+
end
|
48
|
+
|
49
|
+
# Handling multiple declaration with equal.
|
50
|
+
# @param pString String to be handled.
|
51
|
+
# @return Return an array with all variables.
|
52
|
+
def handle_multiple_declaration_with_equal(pString)
|
53
|
+
raise NotImplementedError
|
54
|
+
end
|
55
|
+
|
56
|
+
# Handling simple line declaration.
|
57
|
+
# @param pString String with simple declaration.
|
58
|
+
# @return Return a string.
|
59
|
+
def handle_line_declaration(pString)
|
60
|
+
raise NotImplementedError
|
61
|
+
end
|
62
|
+
|
63
|
+
# class
|
64
|
+
end
|
65
|
+
|
66
|
+
# module
|
67
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Handling attributes data.
|
6
|
+
class AttributeData < Languages::BasicData
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
# Basic initialization of attribute.
|
11
|
+
# @param pAttribute_name Attribute name for basic initialization.
|
12
|
+
def initialize (pAttribute_name)
|
13
|
+
@name = pAttribute_name
|
14
|
+
@visibility = "public"
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Type of the attribute.
|
20
|
+
@type
|
21
|
+
|
22
|
+
# Class
|
23
|
+
end
|
24
|
+
|
25
|
+
# Module
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Languages
|
2
|
+
|
3
|
+
# @abstract Usually, all data in this container needs at list one
|
4
|
+
# information: name. This class aim to be a generic class for all elements
|
5
|
+
# of container data.
|
6
|
+
class BasicData
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
attr_accessor :name
|
11
|
+
attr_accessor :visibility
|
12
|
+
attr_accessor :comments
|
13
|
+
|
14
|
+
# class
|
15
|
+
end
|
16
|
+
|
17
|
+
# module
|
18
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
require_relative 'attribute_data'
|
3
|
+
require_relative 'method_data'
|
4
|
+
require_relative 'constructor_data'
|
5
|
+
|
6
|
+
module Languages
|
7
|
+
|
8
|
+
# Handling class information
|
9
|
+
class ClassData < Languages::BasicData
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
attr_accessor :inheritances
|
14
|
+
attr_reader :attributes
|
15
|
+
attr_reader :methods
|
16
|
+
attr_reader :constructors
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@inheritances = []
|
20
|
+
@attributes = []
|
21
|
+
@methods = []
|
22
|
+
@constructors = []
|
23
|
+
@visibility = "public"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Add attribute to class data, notice the possibility of call this
|
27
|
+
# method more than one time.
|
28
|
+
# @param pAttribute Attribute to be added inside class. This attribute
|
29
|
+
# is a list of AttributeData.
|
30
|
+
def add_attribute(pAttribute)
|
31
|
+
pAttribute.each do |attributeElement|
|
32
|
+
return unless attributeElement.is_a?(Languages::AttributeData)
|
33
|
+
@attributes.push(attributeElement)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Add method inside ClassData. Remember the possibility of have zero or
|
38
|
+
# any method inside a class.
|
39
|
+
# @param pMethod It is an object of FunctionData with the method
|
40
|
+
# informations.
|
41
|
+
def add_method(pMethod)
|
42
|
+
return unless pMethod.is_a?(Languages::FunctionData)
|
43
|
+
|
44
|
+
@methods.push(pMethod)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Add constructor inside class.
|
48
|
+
# @param pConstructor Object of FunctionData to be added at class.
|
49
|
+
def add_constructor(pConstructor)
|
50
|
+
return unless pConstructor.is_a?(Languages::FunctionData)
|
51
|
+
|
52
|
+
@constructors.push(pConstructor)
|
53
|
+
end
|
54
|
+
|
55
|
+
# TODO: REMOVE IT!
|
56
|
+
def get_methods
|
57
|
+
@methods
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_attributes
|
61
|
+
@attributes
|
62
|
+
end
|
63
|
+
|
64
|
+
def get_constructors
|
65
|
+
@constructors
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_parameters
|
69
|
+
@parameters
|
70
|
+
end
|
71
|
+
|
72
|
+
# Class
|
73
|
+
end
|
74
|
+
|
75
|
+
# Module
|
76
|
+
end
|
77
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Class responsible for handling conditional data
|
6
|
+
class ConditionalData < Languages::BasicData
|
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
|
18
|
+
|
19
|
+
# class
|
20
|
+
end
|
21
|
+
|
22
|
+
# module
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'function_abstract'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Handling constructor information.
|
6
|
+
class ConstructorData < Languages::FunctionAbstract
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
def initialize(pConstructorName)
|
11
|
+
super(pConstructorName)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Class
|
15
|
+
end
|
16
|
+
|
17
|
+
# Module
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# ExternRequirementData Handling extern requirements
|
6
|
+
class ExternRequirementData < Languages::BasicData
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
attr_reader :path
|
11
|
+
|
12
|
+
def initialize(pRequirement)
|
13
|
+
@name = pRequirement
|
14
|
+
end
|
15
|
+
|
16
|
+
# Set path of extern requirement.
|
17
|
+
# @param pPath Path inside the extern requirement.
|
18
|
+
def setPath(pPath)
|
19
|
+
@path = pPath
|
20
|
+
end
|
21
|
+
|
22
|
+
# Class
|
23
|
+
end
|
24
|
+
|
25
|
+
# Module
|
26
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
require_relative 'function_data'
|
3
|
+
require_relative 'variable_global_data'
|
4
|
+
require_relative 'extern_requirement_data'
|
5
|
+
require_relative 'module_namespace_data'
|
6
|
+
require_relative 'class_data'
|
7
|
+
|
8
|
+
module Languages
|
9
|
+
|
10
|
+
# FileElement is the upper element related with container data, this class
|
11
|
+
# refers to file.
|
12
|
+
class FileElement < Languages::BasicData
|
13
|
+
|
14
|
+
public
|
15
|
+
|
16
|
+
attr_reader :global_functions
|
17
|
+
attr_reader :global_variables
|
18
|
+
attr_reader :extern_requirements
|
19
|
+
attr_reader :classes
|
20
|
+
attr_reader :modules
|
21
|
+
|
22
|
+
def initialize(pName)
|
23
|
+
@global_functions = []
|
24
|
+
@global_variables = []
|
25
|
+
@extern_requirements = []
|
26
|
+
@classes = []
|
27
|
+
@modules = []
|
28
|
+
@name = pName
|
29
|
+
@comments = ""
|
30
|
+
end
|
31
|
+
|
32
|
+
# Add global function to the file.
|
33
|
+
# @param pFunction An object of FunctionData to be added at the file.
|
34
|
+
def add_global_function(pFunction)
|
35
|
+
return if not pFunction.is_a?(Languages::FunctionData)
|
36
|
+
|
37
|
+
@global_functions.push(pFunction)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Add global variable inside file.
|
41
|
+
# @param pVariable An VariableGlobalData object to be added.
|
42
|
+
def add_global_variable(pVariable)
|
43
|
+
pVariable.each do |element|
|
44
|
+
next unless element.is_a?(Languages::VariableGlobalData)
|
45
|
+
@global_variables.push(element)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Add extern requirement inside file.
|
50
|
+
# @param pOutside Add an object of ExternRequirementData.
|
51
|
+
def add_extern_requirement(pOutside)
|
52
|
+
return unless pOutside.is_a?(Languages::ExternRequirementData)
|
53
|
+
|
54
|
+
@extern_requirements.push(pOutside)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Add a class inside file.
|
58
|
+
# @param pClass Add an object of ClassData.
|
59
|
+
def add_class(pClass)
|
60
|
+
return unless pClass.is_a?(Languages::ClassData)
|
61
|
+
|
62
|
+
@classes.push(pClass)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Add a module inside file.
|
66
|
+
# @param pModule Add an object of ModuleNamespaceData
|
67
|
+
def add_modules(pModule)
|
68
|
+
return unless pModule.is_a?(Languages::ModuleNamespaceData)
|
69
|
+
|
70
|
+
@modules.push(pModule)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Class
|
74
|
+
end
|
75
|
+
|
76
|
+
# Module
|
77
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
require_relative 'conditional_data'
|
3
|
+
require_relative 'repetition_data'
|
4
|
+
|
5
|
+
module Languages
|
6
|
+
|
7
|
+
# Abstraction for handling function data
|
8
|
+
class FunctionAbstract < Languages::BasicData
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
attr_reader :parameters
|
13
|
+
attr_reader :conditionals
|
14
|
+
attr_reader :repetitions
|
15
|
+
attr_accessor :type
|
16
|
+
|
17
|
+
def initialize(pFunctionName)
|
18
|
+
@name = pFunctionName
|
19
|
+
@parameters = []
|
20
|
+
@conditionals = []
|
21
|
+
@repetitions = []
|
22
|
+
end
|
23
|
+
|
24
|
+
# Add parameters inside function.
|
25
|
+
# @param pValue Add a parameter inside function.
|
26
|
+
def add_parameters(pValue)
|
27
|
+
# TODO: You have to fix it.
|
28
|
+
@parameters.push(pValue)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Add conditional element inside function.
|
32
|
+
# @param pConditional An object of ConditionalData.
|
33
|
+
# @return If pConditional is not an instance of ConditionalData,
|
34
|
+
# return nil.
|
35
|
+
def add_conditional(pConditional)
|
36
|
+
return nil unless (pConditional.instance_of?Languages::ConditionalData)
|
37
|
+
@conditionals.push(pConditional)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Add repetition element inside function.
|
41
|
+
# @param pRepetition An object of RepetionData.
|
42
|
+
# @return If pRepetition is not RepetionData instance return nil.
|
43
|
+
def add_repetition(pRepetition)
|
44
|
+
return nil unless (pRepetition.instance_of?Languages::RepetitionData)
|
45
|
+
@repetitions.push(pRepetition)
|
46
|
+
end
|
47
|
+
|
48
|
+
# class
|
49
|
+
end
|
50
|
+
|
51
|
+
# Module
|
52
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative 'function_abstract'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Handle function data
|
6
|
+
class FunctionData < Languages::FunctionAbstract
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
attr_reader :parameters
|
11
|
+
|
12
|
+
def initialize(pFunctionName)
|
13
|
+
super(pFunctionName)
|
14
|
+
@visibility = "global"
|
15
|
+
end
|
16
|
+
|
17
|
+
# class
|
18
|
+
end
|
19
|
+
|
20
|
+
# Module
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'function_abstract'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Handling method informations
|
6
|
+
class MethodData < Languages::FunctionAbstract
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
attr_reader :parameters
|
11
|
+
|
12
|
+
def initialize(pMethod_name)
|
13
|
+
super(pMethod_name)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Class
|
17
|
+
end
|
18
|
+
|
19
|
+
# Module
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Class responsible for handling repetition data
|
6
|
+
class RepetitionData < Languages::BasicData
|
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
|
18
|
+
|
19
|
+
# class
|
20
|
+
end
|
21
|
+
|
22
|
+
# module
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative 'basic_data'
|
2
|
+
|
3
|
+
module Languages
|
4
|
+
|
5
|
+
# Class responsible for handling global variables.
|
6
|
+
class VariableGlobalData < Languages::BasicData
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
attr_accessor :value
|
11
|
+
attr_accessor :type
|
12
|
+
|
13
|
+
def initialize(pName)
|
14
|
+
@name = pName
|
15
|
+
@visibility = "global"
|
16
|
+
end
|
17
|
+
|
18
|
+
# Class
|
19
|
+
end
|
20
|
+
|
21
|
+
# Languages
|
22
|
+
end
|