Sha256: a9af66bf93639ddf9b9952a9e419566577b27f84e3657819034192a12c5b5956
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require 'json' module Twee2 class StoryFormatNotFoundException < Exception; end class StoryFormat # Loads the StoryFormat with the specified name def initialize(name) raise(StoryFormatNotFoundException) if !File::exists?(format_file_path = Twee2::buildpath("storyFormats/#{name}/format.js")) && !File::exists?(format_file_path = "#{name}/format.js") @name = name format_file = File::read(format_file_path) format_data = format_file.match(/(["'])source\1 *: *(["']).*?[^\\]\2/)[0] format_data_for_json = "\{#{format_data}\}" @source = JSON.parse(format_data_for_json)['source'] end # Given a story file, injects it into the StoryFormat and returns the HTML results def compile @source.gsub('{{STORY_NAME}}', Twee2::build_config.story_name).gsub('{{STORY_DATA}}', Twee2::build_config.story_file.xmldata).gsub('{{STORY_FORMAT}}', @name) end # Returns an array containing the known StoryFormat names def self.known_names Dir.open(Twee2::buildpath('storyFormats')).to_a.sort.reject{|d|d=~/^\./}.map do |name| format_file_path = Twee2::buildpath("storyFormats/#{name}/format.js") format_file = File::read(format_file_path) version = format_file.match(/(["'])version\1 *: *(["'])(.*?[^\\])\2/)[3] " * #{name} (#{version})" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
twee2-0.5.0 | lib/twee2/story_format.rb |