Class: Fig::ParserPackageBuildState
- Inherits:
-
Object
- Object
- Fig::ParserPackageBuildState
- Defined in:
- lib/fig/parser_package_build_state.rb
Overview
The state of a Package while it is being built by a Parser.
Instance Method Summary collapse
-
#initialize(grammar_version, descriptor, source_description) ⇒ ParserPackageBuildState
constructor
A new instance of ParserPackageBuildState.
- #new_asset_statement(statement_class, keyword_node, location_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
- #new_v0_command_statement(keyword_node, command_line_node) ⇒ Object
- #new_v1_command_statement(keyword_node, command_line) ⇒ 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.
Constructor Details
#initialize(grammar_version, descriptor, source_description) ⇒ ParserPackageBuildState
Returns a new instance of ParserPackageBuildState.
19 20 21 22 23 |
# File 'lib/fig/parser_package_build_state.rb', line 19 def initialize(grammar_version, descriptor, source_description) @grammar_version = grammar_version @descriptor = descriptor @source_description = source_description end |
Instance Method Details
#new_asset_statement(statement_class, keyword_node, location_node) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/fig/parser_package_build_state.rb', line 82 def new_asset_statement(statement_class, keyword_node, location_node) raw_location = location_node.text_value tokenized_location = statement_class.validate_and_process_escapes_in_location(raw_location) do |error_description| raise_invalid_value_parse_error( keyword_node, location_node, 'URL/path', error_description ) end location = tokenized_location. need_to_glob = ! tokenized_location.single_quoted? return statement_class.new( node_location(keyword_node), @source_description, location, need_to_glob ) end |
#new_configuration_statement(keyword_node, name_node, statements) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/fig/parser_package_build_state.rb', line 119 def new_configuration_statement(keyword_node, name_node, statements) 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
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/fig/parser_package_build_state.rb', line 166 def new_environment_variable_statement( statement_class, keyword_node, value_node ) name = value = nil if @grammar_version == 0 name, value = statement_class.parse_v0_name_value(value_node.text_value) { |description| raise_invalid_statement_parse_error( keyword_node, value_node, description ) } else name, value = statement_class.parse_name_value(value_node.text_value) { |description| raise_invalid_statement_parse_error( keyword_node, value_node, description ) } end 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
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/fig/parser_package_build_state.rb', line 134 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
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/fig/parser_package_build_state.rb', line 150 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
46 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 46 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, @descriptor.description, directory, statement_objects ) end |
#new_retrieve_statement(keyword_node, variable_name_node, path_node) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/fig/parser_package_build_state.rb', line 101 def new_retrieve_statement(keyword_node, variable_name_node, path_node) tokenized_path = Fig::Statement::Retrieve.tokenize_path(path_node.text_value) do |error_description| raise_invalid_value_parse_error( keyword_node, path_node, 'path', error_description ) end return Fig::Statement::Retrieve.new( node_location(keyword_node), @source_description, variable_name_node.text_value, tokenized_path ) end |
#new_v0_command_statement(keyword_node, command_line_node) ⇒ Object
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/fig/parser_package_build_state.rb', line 192 def new_v0_command_statement(keyword_node, command_line_node) tokenized_command = Fig::Statement::Command.validate_and_process_escapes_in_argument( command_line_node.text_value ) { |description| raise_invalid_statement_parse_error( keyword_node, command_line_node, description ) } return Fig::Statement::Command.new( node_location(keyword_node), @source_description, [tokenized_command] ) end |
#new_v1_command_statement(keyword_node, command_line) ⇒ Object
208 209 210 211 212 213 214 |
# File 'lib/fig/parser_package_build_state.rb', line 208 def new_v1_command_statement(keyword_node, command_line) return Fig::Statement::Command.new( node_location(keyword_node), @source_description, tokenize_v1_command_line(keyword_node, command_line) ) end |
#node_location(node) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/fig/parser_package_build_state.rb', line 25 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)
38 39 40 41 42 43 44 |
# File 'lib/fig/parser_package_build_state.rb', line 38 def node_location_description(node) location = node_location(node) return Fig::Statement.position_description( location[0], location[1], @source_description ) end |