7 changed files with 100 additions and 0 deletions
@ -0,0 +1,17 @@
|
||||
module Squib |
||||
module Commands |
||||
|
||||
module Visitable |
||||
def accept visitor |
||||
visitor.visit self |
||||
end |
||||
end |
||||
|
||||
class Command |
||||
def accept visitor |
||||
raise NotImpelementedError.new |
||||
end |
||||
end |
||||
|
||||
end |
||||
end |
||||
@ -0,0 +1,17 @@
|
||||
module Squib |
||||
module Commands |
||||
|
||||
class Font < Command |
||||
include Visitable |
||||
attr_accessor :type, :size |
||||
|
||||
def initialize(type,size, options) |
||||
@type = type |
||||
@size = size |
||||
#no other options yet |
||||
end |
||||
|
||||
end |
||||
|
||||
end |
||||
end |
||||
@ -0,0 +1,17 @@
|
||||
module Squib |
||||
module Commands |
||||
|
||||
class SetFont < Command |
||||
include Visitable |
||||
attr_accessor :type, :size, :options |
||||
|
||||
def initialize(type, size, options) |
||||
@type = type |
||||
@size = size |
||||
#no options yet |
||||
end |
||||
|
||||
end |
||||
|
||||
end |
||||
end |
||||
@ -0,0 +1,11 @@
|
||||
module Squib |
||||
#Global queue of commands |
||||
CMDS = [] |
||||
|
||||
def queue_command(cmd) |
||||
unless cmd.instance_of? Squib::Commands::Command |
||||
raise ArgumentError, "Only RockDeck::Commands allowed here" |
||||
end |
||||
CMDS << cmd |
||||
end |
||||
end |
||||
@ -0,0 +1,11 @@
|
||||
module Squib |
||||
module Render |
||||
|
||||
class RenderContext |
||||
attr_accessor :font #current font we're using |
||||
attr_accessor :cur #index of the current card rendering |
||||
attr_accessor :cards #total number of cards we're iterating over |
||||
end |
||||
|
||||
end |
||||
end |
||||
@ -0,0 +1,12 @@
|
||||
module Squib |
||||
module Visitors |
||||
|
||||
class BaseVisitor |
||||
def visit subject |
||||
method_name = "visit_#{subject.class}".intern |
||||
send(method_name, subject) |
||||
end |
||||
end |
||||
|
||||
end |
||||
end |
||||
Loading…
Reference in new issue