Class: FB::Gcode

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

Defined Under Namespace

Classes: GcodeToken

Constant Summary collapse

GCODE_DICTIONARY =
YAML.load_file(File.join(File.dirname(__FILE__), 'gcode.yml'))

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str) ⇒ Gcode

Returns a new instance of Gcode.



8
9
10
11
12
# File 'lib/gcode.rb', line 8

def initialize(str)
  @str = str
  @params = str.split(' ').map{|line| GcodeToken.new(line)}
  @cmd = @params.shift || 'NULL'
end

Instance Attribute Details

#cmdObject

Returns the value of attribute cmd.



6
7
8
# File 'lib/gcode.rb', line 6

def cmd
  @cmd
end

#paramsObject

Returns the value of attribute params.



6
7
8
# File 'lib/gcode.rb', line 6

def params
  @params
end

#strObject

Returns the value of attribute str.



6
7
8
# File 'lib/gcode.rb', line 6

def str
  @str
end

Class Method Details

.parse_lines(string) ⇒ Object

Turns a string of many gcodes into an array of many gcodes. Used to parse incoming serial.



16
17
18
# File 'lib/gcode.rb', line 16

def self.parse_lines(string)
  string.gsub("\r", '').split("\n").map { |s| self.new(s) }
end

Instance Method Details

#nameObject

Returns a symbolized english version of the gcode’s name.



21
22
23
# File 'lib/gcode.rb', line 21

def name
  GCODE_DICTIONARY[cmd.to_sym] || :unknown
end

#to_sObject



25
26
27
# File 'lib/gcode.rb', line 25

def to_s
  [@cmd, *@params].map(&:to_s).join(" ")
end