Class: Fig::ParserPackageBuildState
- Inherits:
-
Object
- Object
- Fig::ParserPackageBuildState
- Defined in:
- lib/fig/parser_package_build_state.rb
Instance Attribute Summary collapse
-
#descriptor ⇒ Object
readonly
Returns the value of attribute descriptor.
-
#source_description ⇒ Object
readonly
Returns the value of attribute source_description.
Instance Method Summary collapse
-
#initialize(descriptor, source_description) ⇒ ParserPackageBuildState
constructor
A new instance of ParserPackageBuildState.
- #new_asset_statement(statement_class, keyword_node, url_node) ⇒ Object
- #new_command_statement(keyword_node, command_node) ⇒ Object
- #new_configuration_statement(keyword_node, name_node, statements) ⇒ Object
- #new_environment_variable_statement(statement_class, keyword_node, value_node) ⇒ Object
- #new_grammar_version_statement(keyword_node, version_node) ⇒ Object
- #new_include_statement(keyword_node, descriptor_node) ⇒ Object
- #new_override_statement(keyword_node, descriptor_node) ⇒ Object
- #new_package_statement(directory, grammar_node, statement_nodes) ⇒ Object
- #new_retrieve_statement(keyword_node, variable_name_node, path_node) ⇒ Object
- #node_location(node) ⇒ Object
-
#node_location_description(node) ⇒ Object
This method is necessary due to ruby v1.8 not allowing array splat notation, i.e.
- #raise_invalid_value_parse_error(keyword_node, value_node, value_name, description) ⇒ Object
Constructor Details
#initialize(descriptor, source_description) ⇒ ParserPackageBuildState
Returns a new instance of ParserPackageBuildState.
21 22 23 24 |
# File 'lib/fig/parser_package_build_state.rb', line 21 def initialize(descriptor, source_description) @descriptor = descriptor @source_description = source_description end |
Instance Attribute Details
#descriptor ⇒ Object (readonly)
Returns the value of attribute descriptor.
18 19 20 |
# File 'lib/fig/parser_package_build_state.rb', line 18 def descriptor @descriptor end |
#source_description ⇒ Object (readonly)
Returns the value of attribute source_description.
19 20 21 |
# File 'lib/fig/parser_package_build_state.rb', line 19 def source_description @source_description end |
Instance Method Details
#new_asset_statement(statement_class, keyword_node, url_node) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/fig/parser_package_build_state.rb', line 82 def new_asset_statement(statement_class, keyword_node, url_node) url = url_node.text_value need_to_glob = statement_class.validate_and_process_escapes_in_url!(url) { |error_description| raise_invalid_value_parse_error( keyword_node, url_node, 'URL/path', error_description ) } return statement_class.new( node_location(keyword_node), source_description, url, need_to_glob ) end |
#new_command_statement(keyword_node, command_node) ⇒ Object
176 177 178 179 180 181 182 |
# File 'lib/fig/parser_package_build_state.rb', line 176 def new_command_statement(keyword_node, command_node) return Fig::Statement::Command.new( node_location(keyword_node), source_description, command_node.value.text_value ) end |
#new_configuration_statement(keyword_node, name_node, statements) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/fig/parser_package_build_state.rb', line 107 def new_configuration_statement(keyword_node, name_node, statements) if Fig::Parser.strict_keyword? name_node.text_value raise_invalid_value_parse_error( keyword_node, name_node, 'name', 'is a keyword.' ) end statement_objects = statements.elements.map do |statement| statement.to_config_statement(self) end return Fig::Statement::Configuration.new( node_location(keyword_node), source_description, name_node.text_value, statement_objects ) end |
#new_environment_variable_statement(statement_class, keyword_node, value_node) ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/fig/parser_package_build_state.rb', line 160 def new_environment_variable_statement( statement_class, keyword_node, value_node ) name, value = statement_class.parse_name_value(value_node.text_value) { raise_invalid_value_parse_error( keyword_node, value_node, 'value', statement_class.const_get(:ARGUMENT_DESCRIPTION) ) } return statement_class.new( node_location(keyword_node), source_description, name, value ) end |
#new_grammar_version_statement(keyword_node, version_node) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/fig/parser_package_build_state.rb', line 74 def new_grammar_version_statement(keyword_node, version_node) return Fig::Statement::GrammarVersion.new( node_location(keyword_node), source_description, version_node.text_value.to_i ) end |
#new_include_statement(keyword_node, descriptor_node) ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/fig/parser_package_build_state.rb', line 128 def new_include_statement(keyword_node, descriptor_node) include_descriptor = Fig::Statement::Include.parse_descriptor( descriptor_node.text_value.strip, :source_description => node_location_description(descriptor_node), :validation_context => ' for an include statement' ) return Fig::Statement::Include.new( node_location(keyword_node), source_description, include_descriptor, descriptor ) end |
#new_override_statement(keyword_node, descriptor_node) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/fig/parser_package_build_state.rb', line 144 def new_override_statement(keyword_node, descriptor_node) override_descriptor = Fig::Statement::Override.parse_descriptor( descriptor_node.text_value.strip, :source_description => node_location_description(descriptor_node), :validation_context => ' for an override statement' ) return Fig::Statement::Override.new( node_location(keyword_node), source_description, override_descriptor.name, override_descriptor.version ) end |
#new_package_statement(directory, grammar_node, statement_nodes) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/fig/parser_package_build_state.rb', line 47 def new_package_statement(directory, grammar_node, statement_nodes) grammar_statement = nil if grammar_node && ! grammar_node.empty? grammar_statement = grammar_node.to_package_statement(self) else grammar_statement = Fig::Statement::GrammarVersion.new( nil, %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>, 0 # Grammar version ) end statement_objects = [grammar_statement] statement_nodes.elements.each do |node| statement_objects << node.to_package_statement(self) end return Fig::Package.new( descriptor.name, descriptor.version, directory, statement_objects ) end |
#new_retrieve_statement(keyword_node, variable_name_node, path_node) ⇒ Object
98 99 100 101 102 103 104 105 |
# File 'lib/fig/parser_package_build_state.rb', line 98 def new_retrieve_statement(keyword_node, variable_name_node, path_node) return Fig::Statement::Retrieve.new( node_location(keyword_node), source_description, variable_name_node.text_value, path_node.text_value ) end |
#node_location(node) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/fig/parser_package_build_state.rb', line 26 def node_location(node) offset_from_start_of_file = node.interval.first input = node.input return [ input.line_of(offset_from_start_of_file), input.column_of(offset_from_start_of_file) ] end |
#node_location_description(node) ⇒ Object
This method is necessary due to ruby v1.8 not allowing array splat notation, i.e. Fig::Statement.position_description(*node_location(node), source_description)
39 40 41 42 43 44 45 |
# File 'lib/fig/parser_package_build_state.rb', line 39 def node_location_description(node) location = node_location(node) return Fig::Statement.position_description( location[0], location[1], source_description ) end |
#raise_invalid_value_parse_error(keyword_node, value_node, value_name, description) ⇒ Object
184 185 186 187 188 189 190 |
# File 'lib/fig/parser_package_build_state.rb', line 184 def raise_invalid_value_parse_error( keyword_node, value_node, value_name, description ) raise Fig::PackageParseError.new( %Q<Invalid #{value_name} for #{keyword_node.text_value} statement: "#{value_node.text_value}" #{description}#{node_location_description(value_node)}> ) end |