module YUML
A module to create a DSL for yuml.me
Constants
- ESCAPE_CHARACTERS
Public Instance Methods
attach_note(content, color = nil)
click to toggle source
# File lib/yuml.rb, line 34 def attach_note(content, color = nil) notes << YUML::Note.create(content, color) end
class(&block)
click to toggle source
# File lib/yuml.rb, line 27 def class(&block) yuml_class = YUML::Class.new block.arity < 1 ? yuml_class.instance_eval(&block) : block.call(yuml_class) classes << yuml_class yuml_class end
generate(file: '/tmp/yuml.pdf') { |self| ... }
click to toggle source
# File lib/yuml.rb, line 20 def generate(file: '/tmp/yuml.pdf') classes.clear notes.clear yield self fetch_uml file end
Private Instance Methods
classes()
click to toggle source
# File lib/yuml.rb, line 40 def classes @classes ||= [] end
encodings()
click to toggle source
# File lib/yuml.rb, line 67 def encodings "#{ESCAPE_CHARACTERS.values.join}[](){}+->|.,=;*^ " end
extname(filename)
click to toggle source
# File lib/yuml.rb, line 62 def extname(filename) return '.pdf' unless %w(.pdf .png .jpg .jpeg).include?(File.extname(filename)) File.extname(filename).sub('.jpg', '.jpeg') end
fetch_uml(file)
click to toggle source
# File lib/yuml.rb, line 56 def fetch_uml(file) uri = URI("https://yuml.me/diagram/class/#{yuml}#{extname(file)}") response = Net::HTTP.get_response(uri) File.write(file, response.body) end
notes()
click to toggle source
# File lib/yuml.rb, line 44 def notes @notes ||= [] end
yuml()
click to toggle source
# File lib/yuml.rb, line 48 def yuml uml = classes.map(&:to_s).join(',') relationships = classes.map(&:relationships).compact uml << ',' << relationships.join(',') unless relationships.empty? uml << ',' << notes.join(',') unless notes.empty? URI.encode(uml, encodings) end