Skip to content

Instantly share code, notes, and snippets.

@glabra
Created January 13, 2016 05:54
Show Gist options
  • Save glabra/944b32ca933857418c46 to your computer and use it in GitHub Desktop.
Save glabra/944b32ca933857418c46 to your computer and use it in GitHub Desktop.
mikutterのpostboxのtweaks
=begin
these snippets might be usable
UserConfig[:intersperse_delimiter] ||= ','
UserConfig[:intersperse_default] ||= ' '
det = UserConfig[:intersperse_delimiter].dup
det.sub!(Regexp.union(META_CHARACTERS), '\\\\\&')
extractor = Regexp.new /\$\(([^\)]+?)(?:#{det}([^\)]+))?\)/
settings "postbox_tweaks" do
input 'intersperse delimiter', :intersperse_delimiter
input 'intersperse default', :intersperse_default
end
=end
Plugin.create :postbox_tweaks do
META_CHARACTERS = %w/( ) [ ] { } . ? + | \\/
EMOJISYO = {
'sushi': '🍣',
'love': 'ℒℴvℯ',
'heart': '♥'
}
filter_gui_postbox_post do |gui_postbox|
text = Plugin.create(:gtk).widgetof(gui_postbox).widget_post.buffer.text
is_substituted = false
# :sushi: to 🍣
extractor = Regexp.new /:(#{Regexp.union EMOJISYO.keys.map(&:to_s)}):/
while text =~ extractor
is_substituted = true
label = (text.match extractor)[1]
text.sub!(":#{label}:", EMOJISYO[label.to_sym])
end
# $(abc,|) to a|b|c
extractor = Regexp.new /\$\(([^\)]+?)(?:,([^\)]+))?\)/
while text =~ extractor
is_substituted = true
injectee, injecter = (text.match extractor)[1..2]
injecter ||= ' '
result = injectee.split('').zip([injecter].cycle).flatten[0..-2].join
text.sub!(extractor, result)
end
if is_substituted
Plugin.create(:gtk).widgetof(gui_postbox).widget_post.buffer.text = text
Plugin.filter_cancel!
end
[gui_postbox]
end
settings "postbox_tweaks" do
multiselect '絵文字一覧', :emoji_enabled do
EMOJISYO.each do |k, v|
option k.to_sym, ":#{k}: => #{v}"
end
end
end
command(:raw_post,
name: '入力内容をそのまま投稿する',
condition: lambda{ |opt| true },
visible: true,
role: :postbox) do |opt|
Plugin.create(:gtk).widgetof(opt.widget).post_it
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment