jekyll-asciimath 1.0.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3e9b8cf3a6a1d6136d911e0bbd9cc4b9447fd332eae240c82696a52ff4941ee2
4
+ data.tar.gz: 95b5ffe13981239048b7d323b7897662ee4ddcaa9615e61af460a79714524c11
5
+ SHA512:
6
+ metadata.gz: 8100dcec170c83500d3aeff55322701f637f5ee7f2834ab0799cb4bd56c59f685da415f118420fa69b40d87e7758965f1d93e7854fdc7fb34570db3fda211b47
7
+ data.tar.gz: bf51be49b8684d3a43a566384f37c55c9bc29ed429d2c3448bac52fe0856385fff6375bbf7930b5782c292dcebf3ef30de6732ed846894576bb4af67f575595b
@@ -0,0 +1,5 @@
1
+ = Changelog
2
+
3
+ == 1.0.0
4
+
5
+ The initial version of the plugin.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Ribose
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,100 @@
1
+ = AsciiMath plugin for Jekyll
2
+
3
+ == `asciimath` filter
4
+
5
+ When applied to a variable, replaces AsciiMath markup between specified delimiters
6
+ with HTML.
7
+
8
+ For example, Liquid markup like this:
9
+
10
+ [source,liquid]
11
+ --
12
+ {% assign some_variable = "$$m$$ out of $$n$$ redundancy" %}
13
+ {{ some_variable | asciimath }}
14
+ --
15
+
16
+ would be rendered into this
17
+ (but without whitespace, which is added for legibility):
18
+
19
+ [source,html]
20
+ --
21
+ <span class="math-inline">
22
+ <span class="math-row">
23
+ <span class="math-identifier">m</span>
24
+ </span>
25
+ </span>
26
+
27
+ out of
28
+
29
+ <span class="math-inline">
30
+ <span class="math-row">
31
+ <span class="math-identifier">n</span>
32
+ </span>
33
+ </span>
34
+
35
+ redundancy
36
+ --
37
+
38
+ == How it works
39
+
40
+ This plugin uses https://github.com/asciidoctor/asciimath for converting AsciiMath into HTML,
41
+ and a crude regular expression for extracting AsciiMath markup from a mass of text
42
+ based on delimiters.
43
+
44
+ == Configuration
45
+
46
+ The plugin will work without any site configuration keys,
47
+ but it requires you to include AsciiMath styling CSS in your template
48
+ and to pay attention to the default delimiter setting (see below).
49
+
50
+ === Delimiter
51
+
52
+ Currently, only one delimiter is supported
53
+ (i.e., opening delimiter must be the same as trailing delimiter).
54
+
55
+ Configure the delimiter for use with `asciimath` filters in your site config
56
+ as follows:
57
+
58
+ [source,yaml]
59
+ --
60
+ asciimath_delimiter: $$
61
+ --
62
+
63
+ The default delimiter is `$$`.
64
+
65
+ NOTE: Delimiter will be passed to Ruby’s `Regexp.quote()`,
66
+ so there’s no need to quote special characters.
67
+
68
+ === Styling
69
+
70
+ For the HTML output of `asciimath` filter to be rendered correctly,
71
+ you have to include the relevant CSS.
72
+
73
+ The plugin automatically copies the CSS file from the `asciimath` gem
74
+ distribution into the assets directory of your site output.
75
+
76
+ To change the path to CSS, specify the `asciimath_css_dir` option:
77
+
78
+ [source,yaml]
79
+ --
80
+ asciimath_css_path: assets/math.css
81
+ --
82
+
83
+ To disable this behavior, set that variable to empty string.
84
+
85
+ The default path is `assets/math.css`.
86
+
87
+ [IMPORTANT]
88
+ ====
89
+ The plugin will only copy the CSS file, but it will not
90
+ include it your website’s source.
91
+ Add the relevant `<link>` in your template like this:
92
+
93
+ [source,html]
94
+ --
95
+ <head>
96
+ <!-- ...other markup... -->
97
+ <link href="{{ "/assets/math.css" | relative_url }}" />
98
+ </head>
99
+ --
100
+ ====
@@ -0,0 +1,41 @@
1
+ #!/bin/sh
2
+ # Tag and push a release.
3
+
4
+ set -e
5
+
6
+ # Make sure we're in the project root.
7
+
8
+ cd $(dirname "$0")/..
9
+
10
+ # Make sure the darn thing works? Meh.
11
+ # bundle update
12
+
13
+ # Build a new gem archive.
14
+
15
+ rm -rf jekyll-asciimath-*.gem
16
+ gem build -q jekyll-asciimath.gemspec
17
+
18
+ # Make sure we're on the master branch.
19
+
20
+ (git branch | grep -q 'master') || {
21
+ echo "Only release from the master branch."
22
+ exit 1
23
+ }
24
+
25
+ # Figure out what version we're releasing.
26
+
27
+ tag=v`ls jekyll-asciimath-*.gem | sed 's/^jekyll-asciimath-\(.*\)\.gem$/\1/'`
28
+
29
+ # Make sure we haven't released this version before.
30
+
31
+ git fetch -t origin
32
+
33
+ (git tag -l | grep -q "$tag") && {
34
+ echo "Whoops, there's already a '${tag}' tag."
35
+ exit 1
36
+ }
37
+
38
+ # Tag it and bag it.
39
+
40
+ gem push jekyll-asciimath-*.gem && git tag "$tag" &&
41
+ git push origin master && git push origin "$tag"
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'jekyll-asciimath'
5
+ s.version = '1.0.0'
6
+ s.authors = ['Ribose Inc.']
7
+ s.email = ['open.source@ribose.com']
8
+
9
+ s.summary = 'AsciiMath plugin for Jekyll'
10
+ s.homepage = 'https://github.com/riboseinc/jekyll-asciimath/'
11
+ s.license = 'MIT'
12
+
13
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) }
14
+
15
+ s.add_runtime_dependency 'jekyll', '~> 4.0'
16
+ s.add_runtime_dependency 'asciimath', '~> 1.0.9'
17
+ s.add_development_dependency 'rake', '~> 12.0'
18
+ s.add_development_dependency 'rubocop', '~> 0.50'
19
+
20
+ s.require_paths = ["lib"]
21
+ end
@@ -0,0 +1 @@
1
+ require 'jekyll_asciimath/jekyll_asciimath'
@@ -0,0 +1,38 @@
1
+ require "asciimath"
2
+
3
+
4
+ $ASCIIMATH_CSS = File.join(Gem::Specification.find_by_name("asciimath").gem_dir, "style", "math.css")
5
+
6
+
7
+ Jekyll::Hooks.register :site, :post_write do |site|
8
+ site_asciimath_css_path = site.config['asciimath_css_path'] || 'assets/math.css'
9
+ target = File.join(site.config['destination'] || '_site', site_asciimath_css_path)
10
+ system("cp #{$ASCIIMATH_CSS} #{target}")
11
+ end
12
+
13
+
14
+ module Jekyll::AsciiMathFilter
15
+ def asciimath(input)
16
+ delimiter = @context.registers[:site].config['asciimath_delimiter'] || '$$'
17
+ delim_regex = Regexp.quote(delimiter)
18
+ asciimath_regex = Regexp.new("(?<=#{delim_regex})[^#{delim_regex}]+(?=#{delim_regex})")
19
+
20
+ if input.scan(asciimath_regex).size > 0
21
+ pieces = "#{delimiter} #{input} #{delimiter}".scan(asciimath_regex)
22
+ parsed_pieces = []
23
+
24
+ pieces.each_with_index { |piece, idx|
25
+ if idx.odd?
26
+ parsed_pieces << AsciiMath.parse(piece).to_html
27
+ elsif piece != ' '
28
+ parsed_pieces << piece
29
+ end
30
+ }
31
+ return parsed_pieces.join('')
32
+ else
33
+ return input
34
+ end
35
+ end
36
+ end
37
+
38
+ Liquid::Template.register_filter(Jekyll::AsciiMathFilter)
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-asciimath
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: asciimath
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.9
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.9
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.50'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.50'
69
+ description:
70
+ email:
71
+ - open.source@ribose.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - CHANGELOG.adoc
77
+ - LICENSE.txt
78
+ - README.adoc
79
+ - develop/release
80
+ - jekyll-asciimath.gemspec
81
+ - lib/jekyll-asciimath.rb
82
+ - lib/jekyll_asciimath/jekyll_asciimath.rb
83
+ homepage: https://github.com/riboseinc/jekyll-asciimath/
84
+ licenses:
85
+ - MIT
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubygems_version: 3.0.3
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: AsciiMath plugin for Jekyll
106
+ test_files: []