Sha256: ecd8374fff846c4bad7ea3931c8285b363db7ab9cb214e71e9d36919136c7b8a

Contents?: true

Size: 1.56 KB

Versions: 2

Compression:

Stored size: 1.56 KB

Contents

module TimelineSetter
  class Timeline
    attr_reader :timeline
    # Instantiate a new timeline from an events
    # array created in Parser#initialize
    def initialize(events)
      @events = events
    end

    # Convert human dates to timestamps, sort the hash by timestamp, and
    # convert the events hash to JSON to stick into our HTML.
    def to_json
      @events.each {|r| r[:timestamp] = Time.parse(r[:date]).to_i * 1000 }
      @events.to_json
    end

    def timeline_markup
      tmpl("timeline-markup.erb")
    end

    # Create timeline HTML by interpolating events hash into an ERB template.
    # Re-template timeline by editing ../templates/timeline.erb
    # This version preserves external links to CSS and JS.
    def timeline
      @timeline = tmpl("timeline.erb")
    end

    # Create a minified one-page version of a timeline by minifying CSS and JS and embedding all assets
    # into our ERB template.
    def timeline_min
      @js = ""
      @css = Kompress::CSS.new(File.open("#{TimelineSetter::ROOT}/public/stylesheets/timeline-setter.css").read).css
      libs = Dir.glob("#{TimelineSetter::ROOT}/public/javascripts/vendor/**")
      libs.each { |lib| @js << File.open(lib,'r').read }
      @min_html = Kompress::HTML.new(timeline_markup).html
      @js << Closure::Compiler.new.compile(File.open("#{TimelineSetter::ROOT}/public/javascripts/timeline-setter.js", 'r'))
      @timeline = tmpl("timeline-min.erb")
    end
    
    def tmpl(tmpl_file)
      ERB.new(File.open("#{TimelineSetter::ROOT}/templates/#{tmpl_file}").read).result(binding)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
timeline_setter-0.1.2 lib/timeline_setter/timeline.rb
timeline_setter-0.1.1 lib/timeline_setter/timeline.rb