\ net2o template for new files \ Copyright (C) 2016 Bernd Paysan \ This program is free software: you can redistribute it and/or modify \ it under the terms of the GNU Affero General Public License as published by \ the Free Software Foundation, either version 3 of the License, or \ (at your option) any later version. \ This program is distributed in the hope that it will be useful, \ but WITHOUT ANY WARRANTY; without even the implied warranty of \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ GNU Affero General Public License for more details. \ You should have received a copy of the GNU Affero General Public License \ along with this program. If not, see . also regexps \ example of Twitter date: "Mon Oct 08 22:27:35 +0000 2018" scope: weekdays 0 7 enums Sun Mon Tue Wed Thu Fri Sat }scope scope: months 1 12 enums Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec }scope : twitter-?date ( addr u -- flag ) (( \( letter c? letter c? letter c? \) \s \ \1=weekday \1 ['] weekdays >body find-name-in 0= ?LEAVE \ yeah, we can do that! \( letter c? letter c? letter c? \) \s \ \2=month \2 ['] months >body find-name-in 0= ?LEAVE \ yeah, we can do that! \( \d \d \) \s \ \3=day \( \d \d \) ` : \( \d \d \) ` : \( \d \d \) \s \ \4:\5:\6=time {{ ` + \( || \( ` - }} \d \d `? : \d \d \) \s \ \7=timezone \( \d \d \d \d \) \ \8=year )) ; : twitter-date>ticks ( -- ticks ) \8 s>number drop \2 ['] months >body find-name-in name>int execute \3 s>number drop ymd2day unix-day0 - #24 * \4 s>number drop + #60 * \5 s>number drop + \7 2 umin s>number drop #60 * \7 dup 2 - /string s>unumber? 2drop over 0< IF - ELSE + THEN - #60 * \6 s>number drop + #1000000000 um* d>64 ; previous : twitter-date ( -- ) ['] twitter-?date is ?date ['] twitter-date>ticks is date>ticks ; cs-scope: twitter object class{ tweets field: tweet[] }class object class{ tweet value: retweeted? value: truncated? value: favorited? value: possibly_sensitive? $value: source$ value: entities{} value: extended_entities{} field: display_text_range[]# value: favorite_count# value: retweet_count# 2value: in_reply_to_status_id& synonym in_reply_to_status_id_str& in_reply_to_status_id& 2value: id& synonym id_str& id& 2value: in_reply_to_user_id& synonym in_reply_to_user_id_str& in_reply_to_user_id& $value: in_reply_to_screen_name$ 64value: created_at! $value: full_text$ $value: lang$ }class object class{ entities field: hashtags[] field: media[] field: symbols[] field: polls[] field: user_mentions[] field: urls[] }class synonym extended_entities entities synonym extended_entities-class entities-class object class{ user_mentions $value: name$ $value: screen_name$ field: indices[]# 2value: id& synonym id_str& id& }class object class{ urls $value: url$ $value: expanded_url$ $value: display_url$ field: indices[]# }class object class{ hashtags $value: text$ field: indices[]# }class synonym symbols hashtags synonym symbols-class hashtags-class object class{ media $value: expanded_url$ field: indices[]# $value: url$ $value: media_url$ $value: media_url_https$ 2value: id& synonym id_str& id& 2value: source_status_id& synonym source_status_id_str& source_status_id& 2value: source_user_id& synonym source_user_id_str& source_user_id& $value: type$ $value: display_url$ value: sizes{} value: video_info{} value: additional_media_info{} }class object class{ sizes value: thumb{} value: small{} value: medium{} value: large{} }class object class{ thumb $value: resize$ value: w# value: h# }class synonym small thumb synonym medium thumb synonym large thumb synonym small-class thumb-class synonym medium-class thumb-class synonym large-class thumb-class object class{ video_info field: aspect_ratio[]# value: duration_millis# field: variants[] }class object class{ variants value: bitrate# $value: content_type$ $value: url$ }class object class{ additional_media_info value: monetizable? }class object class{ polls field: options[] 64value: end_datetime! value: duration_minutes# }class object class{ options value: position# $value: text$ }class }scope : twitter-scan ( -- ) twitter-date ['] twitter >body to schema-scope twitter:tweets-class to outer-class ['] twitter:tweets >body to schema-wid [: (name) 2drop (name) 2drop s" tweet" key$ $! ['] noop is before-line ;] is before-line ; \\\ Local Variables: forth-local-words: ( (("class{") definition-starter (font-lock-keyword-face . 1) "[ \t\n]" t name (font-lock-function-name-face . 3)) (("}class") definition-ender (font-lock-keyword-face . 1)) ) forth-local-indent-words: ( (("class{") (0 . 2) (0 . 2)) (("}class") (-2 . 0) (0 . -2)) ) End: [THEN]