Class: AsciiChem::Transform::CrystalBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/asciichem/transform.rb

Overview

Builds a Crystal from parsed grammar captures. The grammar captures the name, params, and body as raw strings; this class parses them into the model fields.

Instance Method Summary collapse

Constructor Details

#initialize(name, params_str, body_str) ⇒ CrystalBuilder

Returns a new instance of CrystalBuilder.



166
167
168
169
170
# File 'lib/asciichem/transform.rb', line 166

def initialize(name, params_str, body_str)
  @name = strip_parslet(name)
  @params_str = strip_parslet(params_str)
  @body_str = strip_parslet(body_str)
end

Instance Method Details

#buildObject



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/asciichem/transform.rb', line 172

def build
  params = parse_params(@params_str)
  atoms = parse_atoms(@body_str)
  Model::Crystal.new(
    name: @name,
    a: params['a'],
    b: params['b'],
    c: params['c'],
    alpha: params['alpha'],
    beta: params['beta'],
    gamma: params['gamma'],
    spacegroup: params['sg'],
    atoms: atoms
  )
end