jekyll-pseudocode-b 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a206281381f3106b1d82cc74b939b8ab10ec3ee
4
+ data.tar.gz: 7d81b69ca7f21bfbd8fcea8147f99244ab429a21
5
+ SHA512:
6
+ metadata.gz: dadf8baefeda70808d11d0a76d5a2ffab0d462611dd53ded0957bdc3af1ac18d168b1b376ad565eaf198c98f0c93c1e8f9e909e39dbe2d60fbc398b73f3f9697
7
+ data.tar.gz: 891fbd1fc6c702d5746fb5b79211873f8e53e59d1e250310a8741639b5ad52ca180796b1c11cde3b2f52d8cca3b50764466bf71872e39d5960106c63c05ea932
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .idea
6
+ *.iml
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-head
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in jekyll-pseudocode-b.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # jekyll-pseudocode-b
2
+ _A pseudocode/algorithm formatter for sites powered by Jekyll._
3
+
4
+ This is a updated fork from **[wkm/jekyll-pseudo](https://github.com/wkm/jekyll-pseudo)**.
5
+
6
+ Sometimes you don't want to use a particular programming language to
7
+ demonstrate a concept because of the syntactic overhead. **jekyll-pseudocode-b** lets
8
+ you use a gently styled free-formated representation.
9
+
10
+
11
+
12
+ ## Usage:
13
+
14
+ 0. Install the `gem`
15
+
16
+ ```
17
+ gem install jekyll-pseudocode-b
18
+ ```
19
+
20
+ 1. Add the following line to your site's `Gemfile`
21
+
22
+ ```GemFile
23
+ gem 'jekyll-pseudocode-b'
24
+ ```
25
+
26
+ 2. And add the following line to your site plugin's `_config.yml`
27
+
28
+ ```yml
29
+ plugins:
30
+ - jekyll-pseudocode-b
31
+ ```
32
+
33
+ Note: if `jekyll --version` is less than `3.5` use:
34
+
35
+ ```yml
36
+ gems:
37
+ - jekyll-pseudocode-b
38
+ ```
39
+
40
+ ## Language
41
+
42
+ * Indentation is preserved
43
+ * A word beginning with a capital letter is a keyword
44
+ * A word followed by parentheses is a function name
45
+ * All other words are variables
46
+ * Words within double quotes are generally strings
47
+ * Variables that calls a function can reproduce the following output: `myVar.FUNCTION(a);`
48
+
49
+ ## Auto-Formatted Syntax
50
+
51
+ The following table shows auto-formated symbols:
52
+
53
+ | Syntax | Symbol |
54
+ | :------: | :--------: |
55
+ | <- | &#x2190; |
56
+ | -> | &#x2192; |
57
+ | <-- | &#x27f5; |
58
+ | --> | &#x27f6; |
59
+ | => | &#x2265; |
60
+ | <= | &#x2264; |
61
+ | == | &#xff1d; |
62
+ | := | &#x2254; |
63
+ | = | &#x3d; |
64
+ | < | &#65308; |
65
+ | > | &#65310; |
66
+ | [ | &#65339; |
67
+ | ] | &#65341; |
68
+ | <-> | &#x2194; |
69
+ | <--> | &#x27f7; |
70
+ | $pi | &#x3C0; |
71
+ | $tau | &#x1d6d5; |
72
+
73
+ ## Output
74
+
75
+ Output is annotated with `<span>` classes and can be styled using CSS. Typically keywords are made bold and variables are italicized. Using the following code lines:
76
+
77
+ {% pseudocode %}
78
+ Function swap(old, new)
79
+ remaining <- quorumSize
80
+ success <- False
81
+ For Each host
82
+ result[host] <- send(host, propose(old, new))
83
+ If result[host] = "ok"
84
+ remaining--
85
+
86
+ If remaining > 1+quorumSize/2
87
+ success <- True
88
+
89
+ For Each result
90
+ If success
91
+ send(host, confirm(old, new))
92
+ Else
93
+ send(host, cancel(old, new))
94
+ {% endpseudocode %}
95
+
96
+ With a bit of formatting, the above code becomes:
97
+
98
+ ![Image](https://raw.githubusercontent.com/tobiasbu/jekyll-pseudo/master/doc/output-sample.png)
99
+
100
+ ## More Styles
101
+
102
+ You can also create your own style for pseudo-codes like images below. Check on the `css` folder for CSS files examples.
103
+
104
+ _Comming soon_
105
+
106
+ ## Author
107
+
108
+ [Wiktor Macura](https://github.com/wkm) is the author of this plugin. This is fork for updated version with some new features. Also it's based on the fork of [Victor Bazterra](https://github.com/baites).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+
7
+
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+
11
+ task :default => :spec
12
+
Binary file
Binary file
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "jekyll-pseudocode-b/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "jekyll-pseudocode-b"
7
+ spec.version = Jekyll::PseudoCodeB::VERSION
8
+ spec.authors = ["Tobias Ulrich", "Victor Bazterra", "Wiktor Macura"]
9
+ spec.email = ["tobiasbulrich@gmail.com","bazterra@gmail.com", "wmacura@gmail.com"]
10
+ spec.homepage = "http://github.com/wkm/jekyll-pseudo"
11
+ spec.summary = %q{A trivial jekyll plugin for formatting pseudocode}
12
+ spec.description = %q{jekyll-pseudocode helps typeset pseudocode with minimal formatting}
13
+ spec.licenses = ["MIT"]
14
+
15
+ spec.files = `git ls-files`.split("\n")
16
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ spec.require_paths = ["lib"]
19
+
20
+ # specify any dependencies here; for example:
21
+ spec.add_runtime_dependency "jekyll", "~> 3.0"
22
+
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.16"
25
+ spec.add_development_dependency "rspec", "~> 3.5"
26
+ spec.add_development_dependency "rake", "~> 12"
27
+ end
@@ -0,0 +1,54 @@
1
+ module Jekyll
2
+ module PseudoCodeB
3
+ class Brush
4
+ # format a symbol
5
+ def sym(txt)
6
+ raise 'not implemented'
7
+ end
8
+
9
+ # format a function
10
+ def fn(txt)
11
+ raise 'not implemented'
12
+ end
13
+
14
+ # format a object call function
15
+ def objfn(txt)
16
+ raise 'not implemented'
17
+ end
18
+
19
+ # format a variable
20
+ def variable(txt, sub)
21
+ raise 'not implemented'
22
+ end
23
+
24
+ # format a comment
25
+ def comment(txt)
26
+ raise 'not implemented'
27
+ end
28
+
29
+ # format an operator
30
+ def op(txt)
31
+ raise 'not implemented'
32
+ end
33
+
34
+ # format a string
35
+ def string(txt)
36
+ raise 'not implemented'
37
+ end
38
+
39
+ # render plain text
40
+ def plain(txt)
41
+ raise 'not implemented'
42
+ end
43
+
44
+ # render math symbols
45
+ def math(txt)
46
+ raise 'not implemented'
47
+ end
48
+
49
+ def number(txt)
50
+ raise 'not implemented'
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,72 @@
1
+ module Jekyll
2
+ module PseudoCodeB
3
+ class Grammar
4
+ # parse a block of text, using the given brush to format output (works in a single pass)
5
+ def format(txt, brush)
6
+ results = []
7
+
8
+ mappings = [
9
+ [/\#(.*$)/, :comment],
10
+ [/\/\/(.*$)/, :comment],
11
+ [/(\w+)(?=[({\[])/, :fn],
12
+ [/\b([a-zA-Z0-9]*\w+)\.(\w+)(?=[({\[])/, :objfn], # obj calls funcion
13
+ [/\b([A-Z]\w+)/, :sym],
14
+ [/(\".*?\")/, :string],
15
+ [/(<-|->|\+\+|<=|>=|--|!=|:=|==|<>|<->|<-->|<--|-->)/, :op], # try these operators first
16
+ [/([-()\[\]{}=<>+*\/])/, :op], # and these second
17
+ [/(\$pi|\$tau)/, :math],
18
+ [/\b([0-9]*\.?[0-9]+)/, :number],
19
+ [/\b([a-z][a-zA-Z0-9]*)(_[a-zA-Z0-9]+)?/, :var],
20
+ [/^(\s+)/, :indent]
21
+ ]
22
+
23
+ # replace tabs with three spaces
24
+ txt.gsub! /^\t/, ' '
25
+
26
+ # count leading whitespace
27
+ ws = txt.scan(/^ */).map do |leading|
28
+ leading.size
29
+ end
30
+ leading = (ws.min or 0)
31
+
32
+ # remove leading whitespace of the given length
33
+ if leading > 0
34
+ r = /^ {#{leading}}/
35
+ txt.gsub! r, ''
36
+ end
37
+
38
+ # lazy man's parser (we don't do any of that silly backtracking)
39
+ cursor = 0
40
+ while true
41
+ matches = mappings.map do |pair|
42
+ [pair[0].match(txt, cursor), pair[1]]
43
+ end
44
+
45
+ upto = matches.min_by do |pair|
46
+ matchdata = pair[0]
47
+ if matchdata == nil
48
+ txt.size
49
+ else
50
+ matchdata.begin(0)
51
+ end
52
+ end
53
+
54
+ if upto[0] != nil
55
+ results << brush.plain(txt.slice(cursor, upto[0].begin(0)-cursor))
56
+
57
+ # which match?
58
+ captures = upto[0].captures
59
+ results << brush.method(upto[1]).call(*captures)
60
+ cursor = upto[0].end(0)
61
+ else
62
+ # no matches remaining
63
+ results << brush.plain(txt.slice(cursor, txt.size))
64
+ break
65
+ end
66
+ end
67
+
68
+ return results.join('')
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,103 @@
1
+ require 'jekyll-pseudocode-b/brush'
2
+
3
+ module Jekyll
4
+ module PseudoCodeB
5
+ class HtmlBrush < Jekyll::PseudoCodeB::Brush
6
+
7
+ def is_numeric?(s)
8
+ begin
9
+ Float(s)
10
+ rescue
11
+ false # not numeric
12
+ else
13
+ true # numeric
14
+ end
15
+ end
16
+
17
+ def sym(txt)
18
+ "<span class='symbol'>#{txt}</span>"
19
+ end
20
+
21
+
22
+ def fn(txt)
23
+ "<span class='function'>#{txt}</span>"
24
+ end
25
+
26
+ def objfn(obj, fnc)
27
+ "<span class='variable'>#{obj}</span><span class='operator'>.</span><span class='function'>#{fnc}</span>"
28
+ end
29
+
30
+ def number(txt)
31
+ "<span class='numeric'>#{txt}</span>"
32
+ end
33
+
34
+ def var(txt, sub)
35
+ if sub
36
+ "<span class='variable'>#{txt}<sub>#{sub.slice(1,sub.size)}</sub></span>"
37
+ else
38
+ if (is_numeric?(txt))
39
+ "<span class='numeric'>#{txt}</span>"
40
+ else
41
+ "<span class='variable'>#{txt}</span>"
42
+ end
43
+ end
44
+ end
45
+
46
+ def comment(txt)
47
+ "<span class='comment'>/* #{txt.strip} */</span>"
48
+ end
49
+
50
+ def string(txt)
51
+ "<span class='string'>#{txt}</span>"
52
+ end
53
+
54
+ def indent(txt)
55
+ txt.gsub! "\t", ' '
56
+ "<span class='indent'>#{txt}</span>"
57
+ end
58
+
59
+ def op(txt)
60
+ symbol = case txt
61
+ when '<' then '&#65308;'
62
+ when '>' then '&#65310;'
63
+ when '<=' then '&#x2264;'
64
+ when '>=' then '&#x2265;'
65
+ when '<-' then '&#x2190;'
66
+ when '->' then '&#x2192;'
67
+ when '<--' then '&#x27f5;'
68
+ when '-->' then '&#x27f6;'
69
+ when '<->' then '&#x2194;'
70
+ when '<-->' then '&#x27f7;'
71
+ when '*' then '&times;'
72
+ when '[' then '&#65339;'
73
+ when ']' then '&#65341;'
74
+ when '!=' then '&#x2260;'
75
+ when '<>' then '&#x2260;'
76
+ when '=' then '&#x3d;'
77
+ when ':=' then '&#x2254;'
78
+ when '+' then '&#x2b;'
79
+ when '-' then '-'
80
+ when '/' then '/'
81
+ when '==' then '&#xff1d;'
82
+ else txt
83
+ end
84
+ # FIXME: html conversion for some operators
85
+ "<span class='operator'>#{symbol}</span>"
86
+ end
87
+
88
+ def math(txt)
89
+ symbol = case txt
90
+ when '$pi' then '&#x3C0;'
91
+ when '$tau' then '&#x1d6d5;'
92
+ else txt
93
+ end
94
+ # FIXME: html conversion for some operators
95
+ "<span class='math-symbol'>#{symbol}</span>"
96
+ end
97
+
98
+ def plain(txt)
99
+ "#{txt}"
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,59 @@
1
+ require 'jekyll-pseudocode-b/brush'
2
+
3
+ module Jekyll
4
+ module PseudoCodeB
5
+ class MockBrush < Brush
6
+ def sym(txt)
7
+ "sym(#{txt})"
8
+ end
9
+
10
+ def fn(txt)
11
+ "fn(#{txt})"
12
+ end
13
+
14
+ def objfn(obj, fnc)
15
+ "v(#{obj})op(.)fn(#{fnc})"
16
+ end
17
+
18
+ def variable(txt)
19
+ "v(#{txt})"
20
+ end
21
+
22
+ def number(txt)
23
+ "num(#{txt})"
24
+ end
25
+
26
+ def var(txt, sub)
27
+ if sub
28
+ "#{txt}sub(#{sub.slice(1,sub.size)})"
29
+ else
30
+ txt
31
+ end
32
+ end
33
+
34
+ def comment(txt)
35
+ "c(#{txt})"
36
+ end
37
+
38
+ def op(txt)
39
+ "op(#{txt})"
40
+ end
41
+
42
+ def string(txt)
43
+ "str(#{txt})"
44
+ end
45
+
46
+ def indent(txt)
47
+ "i(#{txt})"
48
+ end
49
+
50
+ def math(txt)
51
+ "math(#{txt})"
52
+ end
53
+
54
+ def plain(txt)
55
+ txt
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,5 @@
1
+ module Jekyll
2
+ module PseudoCodeB
3
+ VERSION = "0.1.1"
4
+ end
5
+ end
@@ -0,0 +1,40 @@
1
+ require 'liquid'
2
+ require 'jekyll-pseudocode-b/version'
3
+ require 'jekyll-pseudocode-b/grammar'
4
+ require 'jekyll-pseudocode-b/html_brush'
5
+
6
+
7
+ class String
8
+
9
+ def remove_lines(i)
10
+ split("\n")[i..-1].join("\n")
11
+ end
12
+
13
+ end
14
+
15
+ module Jekyll
16
+ class PseudoCodeBlockB < Liquid::Block
17
+ def initialize(tag_name, text, tokens)
18
+ super
19
+ @brush = PseudoCodeB::HtmlBrush.new
20
+ @grammar = PseudoCodeB::Grammar.new
21
+ end
22
+
23
+
24
+
25
+ def render(context)
26
+ @text = super
27
+
28
+ # for some reason is adding a line to initial code
29
+ # let's removes
30
+ @text = @text.remove_lines(1)
31
+
32
+ @formatted = @grammar.format(@text, @brush)
33
+
34
+ "<div class='pseudocode'>#{@formatted}</div>"
35
+ end
36
+ end
37
+ end
38
+
39
+
40
+ Liquid::Template.register_tag('pseudocode', Jekyll::PseudoCodeBlockB)
@@ -0,0 +1,66 @@
1
+ require_relative '../lib/jekyll-pseudocode-b.rb'
2
+ require_relative '../lib/jekyll-pseudocode-b/mock_brush.rb'
3
+ require 'spec_helper'
4
+
5
+ include Jekyll::PseudoCodeB
6
+
7
+ describe Grammar do
8
+ def format(txt)
9
+ g = Grammar.new
10
+ g.format(txt, MockBrush.new)
11
+ end
12
+
13
+ describe "#format" do
14
+ it "ignores plain text" do
15
+ format("plain text").should eql "plain text"
16
+ end
17
+
18
+ it "formats symbols" do
19
+ format("For").should eql "sym(For)"
20
+ format("For this").should eql "sym(For) this"
21
+ format("If Then").should eql "sym(If) sym(Then)"
22
+ format("If Then that").should eql ("sym(If) sym(Then) that")
23
+ end
24
+
25
+ it "formats number" do
26
+ format("1234").should eql "num(1234)"
27
+ format("1234.1234").should eql "num(1234.1234)"
28
+ end
29
+
30
+ it "formats comments" do
31
+ format("oh #hi\n there").should eql "oh c(hi)\ni( )there"
32
+ end
33
+
34
+ it "formats operators" do
35
+ format("For a < b").should eql("sym(For) a op(<) b")
36
+ end
37
+
38
+ it 'formats strings' do
39
+ format('oh "what" a world!').should eql 'oh str("what") a world!'
40
+ end
41
+
42
+ it 'formats variables' do
43
+ format('x_0').should eql ('xsub(0)')
44
+ format('x_i').should eql ('xsub(i)')
45
+ end
46
+
47
+ it 'formats functions' do
48
+ format('fn(b,c)').should eql('fn(fn)op(()b,cop())')
49
+ format('fn[b,c]').should eql('fn(fn)op([)b,cop(])')
50
+ format('fn{b,c}').should eql('fn(fn)op({)b,cop(})')
51
+ end
52
+
53
+ it 'formats objects functions' do
54
+ format('obj.fn(b,c)').should eql('v(obj)op(.)fn(fn)op(()b,cop())')
55
+ format('obj.fn[b,c]').should eql('v(obj)op(.)fn(fn)op([)b,cop(])')
56
+ format('obj.fn{b,c}').should eql('v(obj)op(.)fn(fn)op({)b,cop(})')
57
+ format('ObjCapital.fn{b,c}').should eql('v(ObjCapital)op(.)fn(fn)op({)b,cop(})')
58
+ end
59
+
60
+ it 'strips leading whitespace' do
61
+ format("\thi\n\tthere").should eql("hi\nthere")
62
+ format("\thi\n\t\tthere").should eql("hi\ni(\t)there")
63
+ format("\t\thi\n\tthere").should eql("i(\t)hi\nthere")
64
+ end
65
+ end
66
+ end
data/spec/html_spec.rb ADDED
@@ -0,0 +1,43 @@
1
+ require_relative '../lib/jekyll-pseudocode-b.rb'
2
+ require_relative '../lib/jekyll-pseudocode-b/mock_brush.rb'
3
+ require 'spec_helper'
4
+
5
+ include Jekyll::PseudoCodeB
6
+
7
+ describe HtmlBrush do
8
+ def format(txt)
9
+ g = Grammar.new
10
+ g.format(txt, HtmlBrush.new)
11
+ end
12
+
13
+ describe "#format" do
14
+ it "symbol span" do
15
+ format("For").should eql "<span class='symbol'>For</span>"
16
+ end
17
+
18
+ it "fn span" do
19
+ format("fn()").should eql "<span class='function'>fn</span><span class='operator'>(</span><span class='operator'>)</span>"
20
+ end
21
+
22
+ it "obj fn span" do
23
+ format("obj.fn()").should eql "<span class='variable'>obj</span><span class='operator'>.</span><span class='function'>fn</span><span class='operator'>(</span><span class='operator'>)</span>"
24
+ end
25
+
26
+ it "numeric span" do
27
+ format("1234").should eql "<span class='numeric'>1234</span>"
28
+ end
29
+
30
+ it "comment span" do
31
+ format("# hi!").should eql "<span class='comment'>/* hi! */</span>"
32
+ end
33
+
34
+ it "variable span" do
35
+ format("a_b").should eql "<span class='variable'>a<sub>b</sub></span>"
36
+ end
37
+
38
+ it "operator converstions" do
39
+ format("<").should eql "<span class='operator'>&#65308;</span>"
40
+ format("*").should eql "<span class='operator'>&times;</span>"
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+
2
+
3
+ RSpec.configure do |config|
4
+ config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
5
+
6
+ config.mock_with :rspec do |mocks|
7
+ mocks.syntax = [:should, :receive]
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-pseudocode-b
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Ulrich
8
+ - Victor Bazterra
9
+ - Wiktor Macura
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2018-02-24 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: jekyll
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '3.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: bundler
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.16'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.16'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.5'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.5'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rake
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '12'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '12'
71
+ description: jekyll-pseudocode helps typeset pseudocode with minimal formatting
72
+ email:
73
+ - tobiasbulrich@gmail.com
74
+ - bazterra@gmail.com
75
+ - wmacura@gmail.com
76
+ executables: []
77
+ extensions: []
78
+ extra_rdoc_files: []
79
+ files:
80
+ - ".gitignore"
81
+ - ".ruby-version"
82
+ - Gemfile
83
+ - README.md
84
+ - Rakefile
85
+ - doc/output-sample.png
86
+ - doc/samplecode.png
87
+ - jekyll-pseudocode-b.gemspec
88
+ - lib/jekyll-pseudocode-b.rb
89
+ - lib/jekyll-pseudocode-b/brush.rb
90
+ - lib/jekyll-pseudocode-b/grammar.rb
91
+ - lib/jekyll-pseudocode-b/html_brush.rb
92
+ - lib/jekyll-pseudocode-b/mock_brush.rb
93
+ - lib/jekyll-pseudocode-b/version.rb
94
+ - spec/grammar_spec.rb
95
+ - spec/html_spec.rb
96
+ - spec/spec_helper.rb
97
+ homepage: http://github.com/wkm/jekyll-pseudo
98
+ licenses:
99
+ - MIT
100
+ metadata: {}
101
+ post_install_message:
102
+ rdoc_options: []
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ requirements: []
116
+ rubyforge_project:
117
+ rubygems_version: 2.6.14
118
+ signing_key:
119
+ specification_version: 4
120
+ summary: A trivial jekyll plugin for formatting pseudocode
121
+ test_files: []