class SoarLexicon::Lexicon

Constants

WADL_XSL

Attributes

app[R]

Public Class Methods

describe(lexicon) click to toggle source
# File lib/soar_lexicon.rb, line 21
def self.describe(lexicon)
  return nil if lexicon.nil?
  translator = Wadling::LexiconTranslator.new(SoarLexicon::Lexicon::WADL_XSL)
  translator.translate_resources_into_wadl(lexicon)
end
describe_resource(lexicon, route) click to toggle source
# File lib/soar_lexicon.rb, line 27
def self.describe_resource(lexicon, route)
  return nil if lexicon.nil? or lexicon[route].nil?
  translator = Wadling::LexiconTranslator.new(SoarLexicon::Lexicon::WADL_XSL)
  data = {}
  data[route] = lexicon[route]
  translator.translate_resources_into_wadl(data)
end
new(app) click to toggle source
# File lib/soar_lexicon.rb, line 10
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/soar_lexicon.rb, line 14
def call(env)
  request = Rack::Request.new(env)
  return respond(SoarLexicon::Lexicon::describe(env['lexicon'])) if Regexp.new('/lexicon').match(request.path)
  return respond(SoarLexicon::Lexicon::describe_resource(env['lexicon'], request.path)) if request.env['QUERY_STRING'] == 'wadl'
  app.call(env)
end

Private Instance Methods

respond(content) click to toggle source
# File lib/soar_lexicon.rb, line 37
def respond(content)
  [200, {"Content-Type" => "application/xml"}, [content]]
end