module Gobstones::CompilationMode::GameFramework

Public Class Methods

compile_content(content) click to toggle source
# File lib/gobstones/compilation_mode.rb, line 21
        def compile_content(content)
          if blockly_code?(content)
            xml = Nokogiri::XML(content)
            xml.root.add_child render_framework_file('program.xml')
            xml.to_xhtml.gsub(/\n\s*/, '')
          else
            <<~GBS
            #{content}

            #{program_code}
            GBS
                .chop
          end
        end
compile_extra(extra) click to toggle source
# File lib/gobstones/compilation_mode.rb, line 17
def compile_extra(extra)
  [extra, extra_code]
end
default_code() click to toggle source
# File lib/gobstones/compilation_mode.rb, line 44
def default_code
  render_framework_file 'default.xml'
end
extra_code() click to toggle source
# File lib/gobstones/compilation_mode.rb, line 36
def extra_code
  render_framework_file 'extra.gbs'
end
program_code() click to toggle source
# File lib/gobstones/compilation_mode.rb, line 40
def program_code
  render_framework_file 'program.gbs'
end

Private Class Methods

blockly_code?(content) click to toggle source
# File lib/gobstones/compilation_mode.rb, line 50
def blockly_code?(content)
  content.strip.start_with? '<xml'
end
render_framework_file(name) click to toggle source
# File lib/gobstones/compilation_mode.rb, line 54
def render_framework_file(name)
  ERB.new(File.read(File.join(__dir__, "../game_framework/#{name}.erb"))).result
end