diff --git a/.gitignore b/.gitignore index b3155bd..8b9c877 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ web/ work/sandbox/ *.lock *.gem - +.rvmrc diff --git a/Gemfile b/Gemfile index e45e65f..3be9c3c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ -source :rubygems +source "https://rubygems.org" gemspec diff --git a/README.md b/README.md index 8f4d745..78852d6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Ruby Q.E.D. + [Homepage](http://rubyworks.github.com/qed) / [Documentation](http://rubydoc.info/gems/qed/frames) / [Report Issue](http://github.com/rubyworks/qed/issues) / diff --git a/demo/12_ignore_non_ruby_code_blox.md b/demo/12_ignore_non_ruby_code_blox.md new file mode 100644 index 0000000..898192e --- /dev/null +++ b/demo/12_ignore_non_ruby_code_blox.md @@ -0,0 +1,28 @@ + # Ignore Non Ruby Code + +Which can be indicated by a markdown \`\`\`elixir string e.g + + count = 0 + +Now we increment it + +```elixir + count = count + 1 +``` + +or not? + +``` + count.assert.zero? + count += 1 +``` + +but + +```ruby + count += 1 +``` + +worx + + count.assert == 2 diff --git a/lib/qed/cli/qed.rb b/lib/qed/cli/qed.rb index 5340419..5d669ba 100644 --- a/lib/qed/cli/qed.rb +++ b/lib/qed/cli/qed.rb @@ -10,9 +10,9 @@ class Session # # Session settings are passed to `Session.new`. # - #def self.settings - # @settings ||= Settings.new - #end + def self.settings + @settings ||= Settings.new + end # # Command line interface for running demos. @@ -56,8 +56,8 @@ def self.cli(*argv) options = cli_parse(argv) - settings = Settings.new(options) - session = Session.new(settings) + @settings = Settings.new(options) + session = Session.new(@settings) success = session.run exit -1 unless success @@ -143,7 +143,7 @@ def self.cli_parse(argv) unless settings.profiles.empty? puts "Available Profiles:" #require 'confection' - QED.profiles.each do |name| + settings.profiles.each do |name| next if name.strip == '' puts " -p #{name}" end diff --git a/lib/qed/parser.rb b/lib/qed/parser.rb index 007d2a0..7038fae 100644 --- a/lib/qed/parser.rb +++ b/lib/qed/parser.rb @@ -103,10 +103,13 @@ def parse indented = false explain = [] example = [] #Step.new(file) + foreign = false # we are inside a foreign language block, e.g. ^```livescript or ^```elixir, but **not** ^```ruby or ^```$ + # TODO: I would not accept the PR like this, but I am willing to refactor this lines.each do |lineno, line| case line when /^\s*$/ # blank line + next if foreign blank = true if indented example << [lineno, line] @@ -114,9 +117,17 @@ def parse explain << [lineno, line] end when /\A\s+/ #/\A(\t|\ \ +)/ # indented + next if foreign indented = true blank = false example << [lineno, line] + # Can we just escape other language blox? + when /\A```ruby/ + foreign = false + when /\A```\s*\z/ + foreign = false + when /\A```\S/ + foreign = true else if indented or blank steps << Step.new(demo, explain, example, steps.last)