:url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket...

24

Upload: others

Post on 22-Jul-2020

46 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine
Page 2: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine
Page 3: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

on_boot do

data = {

:title => 'on_boot',

:body => 'mikutter (^O^) ',

:url => 'https://mikutter.hachune.net/'

}

Plugin.call(:fcm, data)

end

Page 4: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

defevent :tdr_show, priority: :ui_passive, prototype: [Array]

on_tdr_show do |data|

# 5 on_tdr_show 5

t = Time.now - 5 * 60

data.each do |show|

if show.modified > t

Plugin.call(:fcm, show)

end

end

end

Page 5: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

@[email protected]

1.

2. Mastodon

@[email protected]

Page 6: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

2.1. Twitter

Page 7: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

2.2. mikutter Mastodon

Page 8: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

3. Worldon

3.1.

Page 9: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

world_setting

MessageMixin

3.2.

gui

tab timeline

extract

update appear worldon_appear_toots

Page 10: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

extract

3.3.

eventmachine faye-websocket

eventmachine

faye-websocket eventmachine

faye-websocket websocket-client-simple

eventmachine

gem

Page 11: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

pluggaloid eventmachine

faye-

websocket websocket-client-simple websocket

websocket

websocket

ping pong

sse_client

sse_client sse_

3.4. Diva

Message Retriev-

er Diva::Model

Page 12: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

Retriever

Diva

Hash Diva::Model

Status account Account

Status

Plugin::Worldon::Status Diva::Model

Hash Account

Plugin::Worldon::Account

Diva::Model::MessageMixin Diva::Model::UserMixin include

Gdk::ReplyViewer

core/mui/cairo_replyviewer.rb Gdk::SubPart-

sMessageBase

message.has_receive_message?

message.replyto_source_d

core/lib/diva_hacks/mixin/message_mixin.rb

has_receive_message? false

Page 13: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

replyto_source_d MessageMixin

has_receive_message? false replyto_source_d

Gdk::ReplyViewer

3.5. World

world world_shifter current_world

world

world

world_setting

world_setting settings

dialog

world world

Page 14: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

3.5.1. settings(Form) DSL

settings

UserConfig

Plugin.create(:sample) do

settings " " do

input(' ', :tekisuto)

end

end

UserConfig[:tekisuto]

3.5.2. dialog DSL

dialog

Plugin.create(:sample) do

dialog " " do

input(' ', :tekisuto)

end.next do |result|

# result[:tekisuto]

puts result[:tekisuto]

$stdout.flush

end

Page 15: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

end

dialog settings

settings

UserConfig .next result

.next Delayer::Deferred next

fail next

await_input

Plugin.create(:sample) do

dialog " " do

input(' ', :tekisuto)

result = await_input

label " #{result[:tekisuto]} "

end

end

await_input

await_input result

3.5.3. world_setting DSL

world_setting world_setting

world

Plugin.create(:sample) do

world_setting(:sample, ' ') do

input(' ', :tekisuto)

result = await_input

Plugin::Sample::World.new(tekisuto: result[:tekisuto])

end

Page 16: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

end

change_account dialog

await_input world_setting

instance_eval

change_account dialog self

world_setting

await_input

twitter

worldon

3.5.4. World

world

:worlds :world_current

Service.primary

3.6. Spell

spell defspell Plugin.cre-

ate

Page 17: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

defspell

compose

compose

defspell(:compose, :twitter) do |twitter, body:, to: nil, **options|

#

end

defspell(:compose, :twitter, :twitter_tweet) do |twitter, tweet,

body:, **options|

#

end

compose

defspell(:compose, :worldon) do |world, body:, **opts|

#

end

defspell(:compose, :worldon, :worldon_status) do |world, status,

body:, **opts|

#

end

com-

pose

compose

Gtk::PostBox

module Gtk

condition

Page 18: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

class PostBox < Gtk::EventBox

def post_it

@posting = Plugin[:gtk].compose(

current_world,

to_display_only? ? nil : @to.first,

**compose_options

).next{

destroy

}.trap{ |err|

warn err

end_post

}

start_post

end

end

end

current_world

nil

:twitter

defspell(:compose, :twitter)

:twitter :twitter_tweet

defspell(:compose, :twitter, :twitter_tweet)

:twitter :worldon_status

:worldon

defspell(:compose, :worldon)

:worldon :worldon_status

defspell(:compose, :worldon, :worldon_status)

:worldon :twitter_tweet

Page 19: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

Plugin::Spell::SpellNotFoundError raise

Delayer::Deferred

compose

:worldon

:twitter_tweet

Plugin.create(:quoting_toot) do

defspell(:compose, :worldon, :twitter_tweet) do |world, tweet,

body:, **options|

body = "#{body} #{tweet.uri}"

spell(:compose, world, body: body, **options)

end

end

3.7. Score

Page 20: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

3.7.1. score_filter

score_filter

filter_score_filter do |model, note, yielder|

yielder << score

end

score_filter

Plugin::Score::TextNote

score_filter

score_filter

3.7.1.1. Score

filter_score_filter do |model, note, yielder|

if model.class.slug == :target_model_slug && model == note

yielder << score

end

end

3.7.1.2. Score

filter_score_filter do |model, note, yielder|

if model != note

yielder << score

end

end

Page 21: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

score_filter

3.7.2. Worldon Score

score_filter

filter_score_filter do |model, note, yielder|

next [model, note, yielder] unless model == note

next [model, note, yielder] unless

(model.is_a?(pm::Status) || model.is_a?(pm::AccountProfile))

if model.score.size > 1 || model.score.size == 1 &&

!model.score[0].is_a?(Plugin::Score::TextNote)

yielder << model.score

end

[model, note, yielder]

end

model.score

model.score Plugin::Worldon::Status @score attr_ac-

cessor Plugin::Worldon::Parser.dictate_score

3.7.2.1. HTML

nokogiri

<span class="invisible"> <span class="ellipsis">

"..."

Page 22: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

sub-parts-image

"\n----\n"

TextNote <a>

'#'

Tag

mentions

Account

HyperLinkNote

Tag Account

:open intent

3.7.2.2. Emoji

:mikuslime:

Status emojis

Emoji

emojis Emoji

TextNote

Emoji

Page 23: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

TextNote TextNote Plugin::Score::E-

mojiNote

inline_photo

4.

Page 24: :url => 'kohinata.sumomo.ne.jp/mikutter/mikutter15.pdf · eventmachine faye-websocket eventmachine faye-websocket eventmachine faye-websocket websocket-client-simple eventmachine

あとがき �������

前号��������においては、������� を想いしのんだところであるので、今回は �������� を

取り戻すべく、今アツいお二方からの記事を掲載した。

としぁおじいちゃんは生理休暇です。

� 月末にははぴねす!� がでるそうなのでよろしくお願いします。頭の中を軽くして、幸

せな気持ちになれることを期待しています。

――次号予告と寄稿者募集――

原稿提出期限︓6 ⽉末

頒布予定︓コミックマーケット 96

問合せ先︓@brsywe , @ch_print

最近寄稿者が減少してきているので、まだ記事出したことないけれど︕という⽅も是⾮どうぞ。

(但しいつも通り内容を精査します)

奥付

発行日:2018年 12月 31日(コミックマーケット 95):初版第一刷

発行:mikutterの薄い本制作委員会

発行者: @brsywe 西端の放送局内喫茶室長

印刷所:ラクスル

連絡先: brsywe @ hotmail.co.jp

ご意見・ご感想は ������ギフト券のメッセージ欄にどうぞ。

��������の薄い本制作委員会ウェブページ

������������������������������������������

���������の薄い本制作委員会では、������ギフト券による金銭面の支援を受け付けております