Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Please ignore] Test issue #326

Closed
vincentkwok opened this issue Nov 26, 2013 · 5 comments
Closed

[Please ignore] Test issue #326

vincentkwok opened this issue Nov 26, 2013 · 5 comments

Comments

@vincentkwok
Copy link

Test issue

@vincentkwok
Copy link
Author

@vincentkwok
Copy link
Author

require 'digest/md5'

def gfm(text)

Extract pre blocks

extractions = {}
text.gsub!(%r{

.*?
}m) do |match|
md5 = Digest::MD5.hexdigest(match)
extractions[md5] = match
"{gfm-extraction-#{md5}}"
end
end

@vincentkwok
Copy link
Author

require 'digest/md5'

def gfm(text)

Extract pre blocks

extractions = {}
text.gsub!(%r{

.*?
}m) do |match|
md5 = Digest::MD5.hexdigest(match)
extractions[md5] = match
"{gfm-extraction-#{md5}}"
end

prevent foo_bar_baz from ending up with an italic word in the middle

text.gsub!(/(^(?! {4}|\t)\w+\w+\w[\w_]*)/) do |x|
x.gsub('_', '_') if x.split('').sort.to_s[0..1] == '__'
end

in very clear cases, let newlines become
tags

text.gsub!(/^[\w<][^\n]*\n+/) do |x|
x =~ /\n{2}/ ? x : (x.strip!; x << " \n")
end

Insert pre block extractions

text.gsub!(/{gfm-extraction-([0-9a-f]{32})}/) do
"\n\n" + extractions[$1]
end

text
end

if $0 == FILE
require 'test/unit'
require 'shoulda'

class GFMTest < Test::Unit::TestCase
context "GFM" do
should "not touch single underscores inside words" do
assert_equal "foo_bar", gfm("foo_bar")
end

  should "not touch underscores in code blocks" do
    assert_equal "    foo_bar_baz", gfm("    foo_bar_baz")
  end

  should "not touch underscores in pre blocks" do
    assert_equal "\n\n<pre>\nfoo_bar_baz\n</pre>", gfm("<pre>\nfoo_bar_baz\n</pre>")
  end

  should "not treat pre blocks with pre-text differently" do
    a = "\n\n<pre>\nthis is `a\\_test` and this\\_too\n</pre>"
    b = "hmm<pre>\nthis is `a\\_test` and this\\_too\n</pre>"
    assert_equal gfm(a)[2..-1], gfm(b)[3..-1]
  end

  should "escape two or more underscores inside words" do
    assert_equal "foo\\_bar\\_baz", gfm("foo_bar_baz")
  end

  should "turn newlines into br tags in simple cases" do
    assert_equal "foo  \nbar", gfm("foo\nbar")
  end

  should "convert newlines in all groups" do
    assert_equal "apple  \npear  \norange\n\nruby  \npython  \nerlang",
                 gfm("apple\npear\norange\n\nruby\npython\nerlang")
  end

  should "convert newlines in even long groups" do
    assert_equal "apple  \npear  \norange  \nbanana\n\nruby  \npython  \nerlang",
                 gfm("apple\npear\norange\nbanana\n\nruby\npython\nerlang")
  end

  should "not convert newlines in lists" do
    assert_equal "# foo\n# bar", gfm("# foo\n# bar")
    assert_equal "* foo\n* bar", gfm("* foo\n* bar")
  end
end

end
end

@mattr- mattr- closed this as completed Nov 26, 2013
@vincentkwok
Copy link
Author

GitHub Flavored Markdown

View the source of this content.

Let's get the whole "linebreak" thing out of the way. The next paragraph contains two phrases separated by a single newline character:

Roses are red
Violets are blue

The next paragraph has the same phrases, but now they are separated by two spaces and a newline character:

Roses are red
Violets are blue

Oh, and one thing I cannot stand is the mangling of words with multiple underscores in them like perform_complicated_task or do_this_and_do_that_and_another_thing.

A bit of the GitHub spice

In addition to the changes in the previous section, certain references are auto-linked:

These are dangerous goodies though, and we need to make sure email addresses don't get mangled:

My email addy is tom@github.com.

Math is hard, let's go shopping

In first grade I learned that 5 > 3 and 2 < 7. Maybe some arrows. 1 -> 2 -> 3. 9 <- 8 <- 7.

Triangles man! a^2 + b^2 = c^2

We all like making lists

The above header should be an H2 tag. Now, for a list of fruits:

  • Red Apples
  • Purple Grapes
  • Green Kiwifruits

Let's get crazy:

  1. This is a list item with two paragraphs. Lorem ipsum dolor
    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    mi posuere lectus.

Vestibulum enim wisi, viverra nec, fringilla in, laoreet
vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
sit amet velit.
2. Suspendisse id sem consectetuer libero luctus adipiscing.

What about some code in a list? That's insane, right?

  1. In Ruby you can map like this:

    ['a', 'b'].map { |x| x.uppercase }
    
  2. In Rails, you can do a shortcut:

    ['a', 'b'].map(&:uppercase)
    

Some people seem to like definition lists

Lower cost
The new version of this product costs significantly less than the previous one!
Easier to use
We've changed the product so that it's much easier to use!

I am a robot

Maybe you want to print robot to the console 1000 times. Why not?

def robot_invasion
  puts("robot " * 1000)
end

You see, that was formatted as code because it's been indented by four spaces.

How about we throw some angle braces and ampersands in there?

<div class="footer">
    &copy; 2004 Foo Corporation
</div>

Set in stone

Preformatted blocks are useful for ASCII art:

             ,-. 
    ,     ,-.   ,-. 
   / \   (   )-(   ) 
   \ |  ,.>-(   )-< 
    \|,' (   )-(   ) 
     Y ___`-'   `-' 
     |/__/   `-' 
     | 
     | 
     |    -hrr- 
  ___|_____________ 

Playing the blame game

If you need to blame someone, the best way to do so is by quoting them:

I, at any rate, am convinced that He does not throw dice.

Or perhaps someone a little less eloquent:

I wish you'd have given me this written question ahead of time so I
could plan for it... I'm sure something will pop into my head here in
the midst of this press conference, with all the pressure of trying to
come up with answer, but it hadn't yet...

I don't want to sound like
I have made no mistakes. I'm confident I have. I just haven't - you
just put me under the spot here, and maybe I'm not as quick on my feet
as I should be in coming up with one.

Table for two

IDNameRank
1Tom Preston-WernerAwesome
2Albert EinsteinNearly as awesome

Crazy linking action

I get 10 times more traffic from Google than from
Yahoo or MSN.

require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
  • @mentions, #refs, links, formatting, and tags supported
  • list syntax required (any unordered or ordered list supported)
  • this is a complete item
  • this is an incomplete item

@mattr-
Copy link
Collaborator

mattr- commented Nov 27, 2013

Please stop spamming redcarpet issues with your tests! Create your own repo and use the issue tracker that comes with your new repo to do your tests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants