Class: ToLua::Helpers

Inherits:
Object show all
Defined in:
lib/to_lua/helpers.rb

Constant Summary collapse

LUA_C_STYLE_ESCAPES =
{
  "\a" => "\\a",
  "\b" => "\\b",
  "\f" => "\\f",
  "\n" => "\\n",
  "\r" => "\\r",
  "\t" => "\\t",
  "\v" => "\\v",
  "\\" => "\\\\",
  "\"" => "\\\"",
  "'"  => "\\'"
}.freeze
LUA_RESERVED_KEYWORDS =
%w(
  and break do else elseif end false for function if in local nil not or
  repeat return then true until while
)

Class Method Summary collapse

Class Method Details

.encode_string(string) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/to_lua/helpers.rb', line 21

def self.encode_string(string)
  encoded = []

  string.each_char do |char|
    if LUA_C_STYLE_ESCAPES[char]
      encoded << LUA_C_STYLE_ESCAPES[char]
    elsif char =~ /^[^[:print:]]$/
      char.each_byte do |byte|
        encoded << '\\'
        encoded << byte.to_s
      end
    else
      encoded << char
    end
  end

  encoded.join
end

.reserved_keyword?(identifier) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/to_lua/helpers.rb', line 48

def self.reserved_keyword?(identifier)
  LUA_RESERVED_KEYWORDS.include?(identifier)
end

.valid_identifier?(identifier) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/to_lua/helpers.rb', line 40

def self.valid_identifier?(identifier)
  valid_identifier_characters?(identifier) && !reserved_keyword?(identifier)
end

.valid_identifier_characters?(identifier) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/to_lua/helpers.rb', line 44

def self.valid_identifier_characters?(identifier)
  !!(identifier =~ /^[_a-zA-Z][_a-zA-Z0-9]*$/)
end