changeset 0:b3d63ea31ac9

reference
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 10 Nov 2020 19:37:06 +0900
parents
children d17d625d3cdb
files .hgignore cpanfile cpanfile.snapshot parse.pl
diffstat 4 files changed, 161 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgignore	Tue Nov 10 19:37:06 2020 +0900
@@ -0,0 +1,44 @@
+syntax:glob
+
+# Created by https://www.toptal.com/developers/gitignore/api/perl
+# Edit at https://www.toptal.com/developers/gitignore?templates=perl
+
+### Perl ###
+!Build/
+.last_cover_stats
+/META.yml
+/META.json
+/MYMETA.*
+*.o
+*.pm.tdy
+*.bs
+
+# Devel::Cover
+cover_db/
+
+# Devel::NYTProf
+nytprof.out
+
+# Dizt::Zilla
+/.build/
+
+# Module::Build
+_build/
+Build
+Build.bat
+
+# Module::Install
+inc/
+
+# ExtUtils::MakeMaker
+/blib/
+/_eumm/
+/*.gz
+/Makefile
+/Makefile.old
+/MANIFEST.bak
+/pm_to_blib
+/*.zip
+
+# End of https://www.toptal.com/developers/gitignore/api/perl
+local/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpanfile	Tue Nov 10 19:37:06 2020 +0900
@@ -0,0 +1,3 @@
+requires 'JSON';
+requires 'JSON::XS';
+requires 'Path::Tiny';
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpanfile.snapshot	Tue Nov 10 19:37:06 2020 +0900
@@ -0,0 +1,67 @@
+# carton snapshot format: version 1.0
+DISTRIBUTIONS
+  Canary-Stability-2013
+    pathname: M/ML/MLEHMANN/Canary-Stability-2013.tar.gz
+    provides:
+      Canary::Stability 2013
+    requirements:
+      ExtUtils::MakeMaker 0
+  JSON-4.02
+    pathname: I/IS/ISHIGAKI/JSON-4.02.tar.gz
+    provides:
+      JSON 4.02
+      JSON::Backend::PP 4.02
+    requirements:
+      ExtUtils::MakeMaker 0
+      Test::More 0
+  JSON-XS-4.03
+    pathname: M/ML/MLEHMANN/JSON-XS-4.03.tar.gz
+    provides:
+      JSON::XS 4.03
+    requirements:
+      Canary::Stability 0
+      ExtUtils::MakeMaker 6.52
+      Types::Serialiser 0
+      common::sense 0
+  Path-Tiny-0.114
+    pathname: D/DA/DAGOLDEN/Path-Tiny-0.114.tar.gz
+    provides:
+      Path::Tiny 0.114
+      Path::Tiny::Error 0.114
+    requirements:
+      Carp 0
+      Cwd 0
+      Digest 1.03
+      Digest::SHA 5.45
+      Encode 0
+      Exporter 5.57
+      ExtUtils::MakeMaker 6.17
+      Fcntl 0
+      File::Copy 0
+      File::Glob 0
+      File::Path 2.07
+      File::Spec 0.86
+      File::Temp 0.19
+      File::stat 0
+      constant 0
+      overload 0
+      perl 5.008001
+      strict 0
+      warnings 0
+      warnings::register 0
+  Types-Serialiser-1.0
+    pathname: M/ML/MLEHMANN/Types-Serialiser-1.0.tar.gz
+    provides:
+      JSON::PP::Boolean 1.0
+      Types::Serialiser 1.0
+      Types::Serialiser::BooleanBase 1.0
+      Types::Serialiser::Error 1.0
+    requirements:
+      ExtUtils::MakeMaker 0
+      common::sense 0
+  common-sense-3.75
+    pathname: M/ML/MLEHMANN/common-sense-3.75.tar.gz
+    provides:
+      common::sense 3.75
+    requirements:
+      ExtUtils::MakeMaker 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/parse.pl	Tue Nov 10 19:37:06 2020 +0900
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use utf8;
+use Encode;
+use JSON;
+use Path::Tiny;
+use DDP {deparse => 1};
+
+my $json_file = shift or die 'require json file';
+my $revision = decode_json(path($json_file)->slurp);
+
+#p $revision;
+
+my $paths;
+
+for my $elem (@$revision) {
+   push(@{$paths->{$elem->{path}}}, $elem);
+}
+
+for my $path (keys %$paths) {
+    my $elems = $paths->{$path};
+    print "$path\n";
+
+    my @elems = @$elems;
+    if (@elems != 1) {
+      @elems = sort { $b->{createdAt} cmp $a->{createdAt}}  @elems;
+    }
+    my $latest_elem = shift @elems;
+    my $emit_file_path = path("./emit/$path.md");
+    $emit_file_path->parent->mkpath;
+    $emit_file_path->spew_utf8($latest_elem->{body});
+}
+
+__END__
+  {
+    "_id": "5ecce2e5fc19b9004a86ec47",
+    "format": "markdown",
+    "createdAt": "2020-05-26T09:35:33.830Z",
+    "path": "/user/anatofuz/note/2020/05/26",
+    "body": "",
+    "author": "5df5ef37d744a60045dd1524",
+    "hasDiffToPrev": true,
+    "__v": 0
+  }
+