diff --git a/.gitignore b/.gitignore index 3f798c97..03736d5b 100644 --- a/.gitignore +++ b/.gitignore @@ -19,9 +19,10 @@ coverage/ /public/assets /public/system +/public/images/emoji # damn vim backup files *~ # every fucking time, dolphin -.directory \ No newline at end of file +.directory diff --git a/Gemfile b/Gemfile index ecfc613b..165cde69 100644 --- a/Gemfile +++ b/Gemfile @@ -34,6 +34,10 @@ gem 'rails-assets-growl' gem "paperclip", "~> 4.2" gem 'delayed_paperclip' +# x--DD +gem 'gemoji' +gem 'rumoji' + gem 'ruby-progressbar' gem 'rails_admin' diff --git a/Gemfile.lock b/Gemfile.lock index 9e09452c..03597725 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -118,6 +118,7 @@ GEM foreman (0.76.0) dotenv (~> 1.0.2) thor (~> 0.19.1) + gemoji (2.1.0) haml (4.0.6) tilt hashie (3.3.2) @@ -254,6 +255,7 @@ GEM rspec-support (~> 3.0.0) rspec-support (3.0.4) ruby-progressbar (1.7.0) + rumoji (0.4.0) safe_yaml (1.0.4) sanitize (3.1.0) crass (~> 1.0.1) @@ -362,6 +364,7 @@ DEPENDENCIES font-awesome-rails (~> 4.2.0.0) font-kit-rails foreman + gemoji haml http_accept_language jbuilder (~> 2.2.4) @@ -382,6 +385,7 @@ DEPENDENCIES redis rspec-rails (~> 3.0.0) ruby-progressbar + rumoji sanitize sass-rails (~> 4.0.3) sdoc (~> 0.4.1) diff --git a/Rakefile b/Rakefile index 9c92daf4..8f67146a 100644 --- a/Rakefile +++ b/Rakefile @@ -2,6 +2,7 @@ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require File.expand_path('../config/application', __FILE__) +load 'tasks/emoji.rake' Rails.application.load_tasks diff --git a/app/helpers/emoji_helper.rb b/app/helpers/emoji_helper.rb new file mode 100644 index 00000000..044d6b71 --- /dev/null +++ b/app/helpers/emoji_helper.rb @@ -0,0 +1,12 @@ +module EmojiHelper + + def emojify(content, size = 20) + Rumoji::encode(h(content).to_str).gsub(/:([\w+-]+):/) do |match| + if emoji = Emoji.find_by_alias($1) + %(#$1) + else + match + end + end.html_safe if content.present? + end +end \ No newline at end of file diff --git a/app/helpers/markdown_helper.rb b/app/helpers/markdown_helper.rb index 8d69fa7c..8a3e80b5 100644 --- a/app/helpers/markdown_helper.rb +++ b/app/helpers/markdown_helper.rb @@ -1,5 +1,7 @@ module MarkdownHelper + include EmojiHelper + def markdown(content) md = Redcarpet::Markdown.new(FlavoredMarkdown, filter_html: true, @@ -16,6 +18,6 @@ module MarkdownHelper disable_indented_code_blocks: true, strikethrough: true, superscript: false) - Sanitize.fragment(md.render(content), EVIL_TAGS).html_safe + emojify Sanitize.fragment(md.render(content), EVIL_TAGS).html_safe end end \ No newline at end of file diff --git a/app/views/inbox/_entry.html.haml b/app/views/inbox/_entry.html.haml index fb65cce2..a3089eae 100644 --- a/app/views/inbox/_entry.html.haml +++ b/app/views/inbox/_entry.html.haml @@ -15,7 +15,7 @@ ยท %a{href: show_user_question_path(i.question.user.screen_name, i.question.id)} #{i.question.answer_count} response(s) - %p.answerbox--question-text= i.question.content + %p.answerbox--question-text= emojify i.question.content, 16 .panel-body %textarea.form-control{name: 'ib-answer', placeholder: 'Write your answer here...', data: { id: i.id }} %br/ diff --git a/app/views/shared/_answerbox.html.haml b/app/views/shared/_answerbox.html.haml index fc24adae..e4c239ef 100644 --- a/app/views/shared/_answerbox.html.haml +++ b/app/views/shared/_answerbox.html.haml @@ -21,7 +21,7 @@ %a{href: show_user_question_path(a.question.user.screen_name, a.question.id)} #{a.question.answer_count} answers %p.answerbox--question-text - = a.question.content + = emojify a.question.content, 16 .panel-body - if @display_all.nil? = markdown a.content[0..255]