Sha256: d19144bd532c24cce2615563e8f12518bb8852ce5c9557a380149340c514e93a
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
# coding: utf-8 require 'json' module Thinreports::Core module Format module Builder def build(*args) build_internal(*args) rescue Thinreports::Errors::Basic raise rescue raise Thinreports::Errors::InvalidLayoutFormat end # @abstract def build_internal raise NotImplementedError end # @param [Thinreports::Core::Format::Base] format # @param [Hash] options def build_layout(format, options = {}, &block) level = '-' * ((options[:level] || 1 ) - 1) pattern = /<!--#{level}SHAPE(.*?)SHAPE#{level}-->/ format.layout.scan(pattern) do |m| shape_format = block.call(*parsed_format_and_shape_type(m.first)) format.shapes[shape_format.id.to_sym] = shape_format end format.layout.gsub!(pattern, '') end # @param [String] svg def clean(svg) svg.gsub!(/<!--.*?-->/, '') end # @param [String] svg def clean_with_attributes(svg) clean(svg) svg.gsub!(/ x\-[a-z\d\-]+?=".*?"/, '') svg.gsub!(/ class=".*?"/, '') end def shape_tag(format) %{<%= r(:"#{format.id}")%>} end def parsed_format_and_shape_type(json_string) f = parse_json(json_string) [ f['type'], f ] end def parse_json(json_string) JSON.parse(json_string) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
thinreports-0.8.2 | lib/thinreports/core/format/builder.rb |