murdoc 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/bin/murdoc CHANGED
@@ -3,11 +3,15 @@ require "optparse"
3
3
  $: << "./lib/"
4
4
  require "murdoc"
5
5
 
6
-
6
+ options = {}
7
7
 
8
8
  option_parser = OptionParser.new do |opts|
9
9
  opts.banner = "murdoc <input file> <output html>"
10
10
 
11
+ opts.on("--[no-]syntax-highlight", "Highlight syntax using pygments") do |h|
12
+ options[:highlight_source] = h
13
+ end
14
+
11
15
  opts.on_tail("-h", "--help", "Show this message") do
12
16
  puts opts
13
17
  exit
@@ -20,5 +24,5 @@ option_parser.parse!
20
24
  if ARGV.size < 2
21
25
  puts option_parser
22
26
  else
23
- Murdoc.generate_from_file(ARGV[0], ARGV[1])
27
+ Murdoc.generate_from_file(ARGV[0], ARGV[1], options)
24
28
  end
data/lib/murdoc.rb CHANGED
@@ -10,10 +10,11 @@
10
10
 
11
11
 
12
12
  module Murdoc
13
- def self.generate_from_file(input, output)
14
- annotator = Annotator.from_file(input)
13
+ def self.generate_from_file(input, output, options = {})
14
+ annotator = Annotator.from_file(input, nil, options)
15
+ markup_dir = File.dirname(__FILE__)+ "/../markup"
15
16
  File.open(output, "w+") do |f|
16
- f.puts Formatter.new("markup/template.haml").render(:paragraphs => annotator.paragraphs, :stylesheet => File.read("markup/stylesheet.css"))
17
+ f.puts Formatter.new("#{markup_dir}/template.haml").render(:paragraphs => annotator.paragraphs, :stylesheet => File.read("#{markup_dir}/stylesheet.css"))
17
18
  end
18
19
  end
19
20
  end
@@ -8,18 +8,31 @@ module Murdoc
8
8
  # Attribute accessor containing the resulting paragraphs
9
9
  attr_accessor :paragraphs
10
10
 
11
+ # Options
12
+ # Available options:
13
+ # `:highlight_source` -- highlights source syntax using pygments (default: true)
14
+ attr_accessor :options
15
+
16
+ def self.default_options
17
+ {
18
+ :highlight_source => true
19
+ }
20
+ end
21
+
11
22
 
12
23
  # `source` string contains annotated source code
13
24
  # `source_type` is one of supported source types (currently `[:ruby, :javascript]`)
14
- def initialize(source, source_type)
25
+ def initialize(source, source_type, options = {})
15
26
  self.source_type = source_type
16
27
  self.source = source
28
+ self.options = self.class.default_options.merge(options)
17
29
  end
18
30
 
31
+
19
32
  # You may also initialize annotator from file, it will even try to detect the
20
33
  # source type from extension.
21
- def self.from_file(filename, source_type = nil)
22
- self.new(File.read(filename), source_type || detect_source_type_from_filename(filename))
34
+ def self.from_file(filename, source_type = nil, options = {})
35
+ self.new(File.read(filename), source_type || detect_source_type_from_filename(filename), options)
23
36
  end
24
37
 
25
38
  def source_type
@@ -9,12 +9,14 @@ module Murdoc
9
9
  attr_accessor :annotation
10
10
  attr_accessor :source_type
11
11
  attr_accessor :starting_line
12
+ attr_accessor :options
12
13
 
13
- def initialize(source, annotation, starting_line = 0, source_type = nil)
14
+ def initialize(source, annotation, starting_line = 0, source_type = nil, options ={})
14
15
  self.source = source
15
16
  self.annotation = annotation
16
17
  self.starting_line = starting_line
17
18
  self.source_type = source_type
19
+ self.options = options
18
20
  end
19
21
 
20
22
  def source_type
@@ -31,7 +33,7 @@ module Murdoc
31
33
  end
32
34
 
33
35
  def formatted_source
34
- @formatted_source ||= if pygments_installed?
36
+ @formatted_source ||= if pygments_installed? && options[:highlight_source]
35
37
  IO.popen("pygmentize -l #{source_type} -f html", "w+") do |pipe|
36
38
  pipe.puts source
37
39
  pipe.close_write
data/murdoc.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{murdoc}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mark Abramov"]
@@ -11,6 +11,10 @@ describe Murdoc::Annotator do
11
11
  Murdoc::Annotator.new("# Hello", "ruby").source_type.should == "ruby"
12
12
  Murdoc::Annotator.new("# Hello", :ruby).source_type.should == "ruby"
13
13
  end
14
+
15
+ it "should set options from hash" do
16
+ Murdoc::Annotator.new("", "", :foo => :bar).options[:foo].should == :bar
17
+ end
14
18
  end
15
19
 
16
20
  describe ".from_file" do
@@ -17,5 +17,9 @@ describe Murdoc::Paragraph do
17
17
  it "should optionally set starting line" do
18
18
  described_class.new("", "", 666, :ruby).starting_line.should == 666
19
19
  end
20
+
21
+ it "should optionally set options" do
22
+ described_class.new("", "", 666, :ruby, {:foo => :bar}).options.should == {:foo => :bar}
23
+ end
20
24
  end
21
25
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mark Abramov
@@ -166,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- hash: 303347797677614350
169
+ hash: 4042360241948241742
170
170
  segments:
171
171
  - 0
172
172
  version: "0"