From f359b63eb1fc7893bb1274b61e0a4c6384908abe Mon Sep 17 00:00:00 2001 From: syfxlin Date: Sat, 6 Jun 2020 20:35:25 +0800 Subject: [PATCH] :sparkles: feat: Add redis --- config/redis.js | 325 ++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 2 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 config/redis.js diff --git a/config/redis.js b/config/redis.js new file mode 100644 index 0000000..51934c1 --- /dev/null +++ b/config/redis.js @@ -0,0 +1,325 @@ +const types = require("../types"); + +const beforeParse = function ({ html }) { + html = html.replace( + '', + "" + ); + return ( + "" + + html.substring(html.indexOf(""), html.indexOf("") + 7) + ); +}; + +const beforeGenerateToc = function ({ + $, + relativePath, + addDashAnchor, + docset, +}) { + $("head script").each((index, element) => { + if (element.attribs.src.indexOf("jquery-2.0.3.min65af.js") === -1) { + $(element).remove(); + } + }); + $("body script").remove(); + $(".site-header").remove(); + $(".site-footer").remove(); + $("body").append(""); +}; + +const generateToc = function ({ + $, + relativePath, + addDashAnchor, + insertToDb, + docset, +}) { + let h1Title = $("h1"); + if (h1Title.text() === "404 - 悲剧了吧" || relativePath.endsWith("-2.html")) { + return; + } + if ( + relativePath.indexOf("topics") === -1 && + !relativePath.endsWith("documentation.html") + ) { + return; + } + insertToDb({ + name: h1Title.length > 0 ? h1Title.text().trim() : $("h2").text().trim(), + type: types.Guide, + path: relativePath, + }); +}; + +const beforeFilter = function ({ $, relativePath, addDashAnchor, docset }) {}; + +const filter = function ({ $, relativePath, addDashAnchor, docset }) {}; + +const afterFilter = function ({ $, relativePath, addDashAnchor, docset }) {}; + +module.exports = { + name: "redis", + displayName: "Redis", + platformFamily: "Redis", + entry: "www.redis.cn/documentation.html", + domain: "www.redis.cn", + include: [], + exclude: [], + indexGenerator: [ + { + file: "documentation.html", + generateToc: function ({ insertToDb }) { + let commands = [ + "APPEND", + "AUTH", + "BGREWRITEAOF", + "BGSAVE", + "BITCOUNT", + "BITFIELD", + "BITOP", + "BITPOS", + "BLPOP", + "BRPOP", + "BRPOPLPUSH", + "BZPOPMIN", + "BZPOPMAX", + "CLIENT ID", + "CLIENT KILL", + "CLIENT LIST", + "CLIENT GETNAME", + "CLIENT PAUSE", + "CLIENT REPLY", + "CLIENT SETNAME", + "CLIENT UNBLOCK", + "CLUSTER ADDSLOTS", + "CLUSTER COUNT-FAILURE-REPORTS", + "CLUSTER COUNTKEYSINSLOT", + "CLUSTER DELSLOTS", + "CLUSTER FAILOVER", + "CLUSTER FORGET", + "CLUSTER GETKEYSINSLOT", + "CLUSTER INFO", + "CLUSTER KEYSLOT", + "CLUSTER MEET", + "CLUSTER NODES", + "CLUSTER REPLICATE", + "CLUSTER RESET", + "CLUSTER SAVECONFIG", + "CLUSTER SET-CONFIG-EPOCH", + "CLUSTER SETSLOT", + "CLUSTER SLAVES", + "CLUSTER REPLICAS", + "CLUSTER SLOTS", + "COMMAND", + "COMMAND COUNT", + "COMMAND GETKEYS", + "COMMAND INFO", + "CONFIG GET", + "CONFIG REWRITE", + "CONFIG SET", + "CONFIG RESETSTAT", + "DBSIZE", + "DEBUG OBJECT", + "DEBUG SEGFAULT", + "DECR", + "DECRBY", + "DEL", + "DISCARD", + "DUMP", + "ECHO", + "EVAL", + "EVALSHA", + "EXEC", + "EXISTS", + "EXPIRE", + "EXPIREAT", + "FLUSHALL", + "FLUSHDB", + "GEOADD", + "GEOHASH", + "GEOPOS", + "GEODIST", + "GEORADIUS", + "GEORADIUSBYMEMBER", + "GET", + "GETBIT", + "GETRANGE", + "GETSET", + "HDEL", + "HEXISTS", + "HGET", + "HGETALL", + "HINCRBY", + "HINCRBYFLOAT", + "HKEYS", + "HLEN", + "HMGET", + "HMSET", + "HSET", + "HSETNX", + "HSTRLEN", + "HVALS", + "INCR", + "INCRBY", + "INCRBYFLOAT", + "INFO", + "KEYS", + "LASTSAVE", + "LINDEX", + "LINSERT", + "LLEN", + "LPOP", + "LPUSH", + "LPUSHX", + "LRANGE", + "LREM", + "LSET", + "LTRIM", + "MEMORY DOCTOR", + "MEMORY HELP", + "MEMORY MALLOC-STATS", + "MEMORY PURGE", + "MEMORY STATS", + "MEMORY USAGE", + "MGET", + "MIGRATE", + "MONITOR", + "MOVE", + "MSET", + "MSETNX", + "MULTI", + "OBJECT", + "PERSIST", + "PEXPIRE", + "PEXPIREAT", + "PFADD", + "PFCOUNT", + "PFMERGE", + "PING", + "PSETEX", + "PSUBSCRIBE", + "PUBSUB", + "PTTL", + "PUBLISH", + "PUNSUBSCRIBE", + "QUIT", + "RANDOMKEY", + "READONLY", + "READWRITE", + "RENAME", + "RENAMENX", + "RESTORE", + "ROLE", + "RPOP", + "RPOPLPUSH", + "RPUSH", + "RPUSHX", + "SADD", + "SAVE", + "SCARD", + "SCRIPT DEBUG", + "SCRIPT EXISTS", + "SCRIPT FLUSH", + "SCRIPT KILL", + "SCRIPT LOAD", + "SDIFF", + "SDIFFSTORE", + "SELECT", + "SET", + "SETBIT", + "SETEX", + "SETNX", + "SETRANGE", + "SHUTDOWN", + "SINTER", + "SINTERSTORE", + "SISMEMBER", + "SLAVEOF", + "REPLICAOF", + "SLOWLOG", + "SMEMBERS", + "SMOVE", + "SORT", + "SPOP", + "SRANDMEMBER", + "SREM", + "STRLEN", + "SUBSCRIBE", + "SUNION", + "SUNIONSTORE", + "SWAPDB", + "SYNC", + "TIME", + "TOUCH", + "TTL", + "TYPE", + "UNSUBSCRIBE", + "UNLINK", + "UNWATCH", + "WAIT", + "WATCH", + "ZADD", + "ZCARD", + "ZCOUNT", + "ZINCRBY", + "ZINTERSTORE", + "ZLEXCOUNT", + "ZPOPMAX", + "ZPOPMIN", + "ZRANGE", + "ZRANGEBYLEX", + "ZREVRANGEBYLEX", + "ZRANGEBYSCORE", + "ZRANK", + "ZREM", + "ZREMRANGEBYLEX", + "ZREMRANGEBYRANK", + "ZREMRANGEBYSCORE", + "ZREVRANGE", + "ZREVRANGEBYSCORE", + "ZREVRANK", + "ZSCORE", + "ZUNIONSTORE", + "SCAN", + "SSCAN", + "HSCAN", + "ZSCAN", + "XINFO", + "XADD", + "XTRIM", + "XDEL", + "XRANGE", + "XREVRANGE", + "XLEN", + "XREAD", + "XGROUP", + "XREADGROUP", + "XACK", + "XCLAIM", + "XPENDING", + ]; + for (const command of commands) { + insertToDb({ + name: command, + type: types.Command, + path: `www.redis.cn/commands/${command + .toLocaleUpperCase() + .replace(" ", "-")}.html`, + }); + } + }, + }, + ], + generator: [ + { + pattern: /.*/g, + beforeParse, + beforeGenerateToc, + generateToc, + filter, + beforeFilter, + afterFilter, + }, + ], +}; diff --git a/package.json b/package.json index c977c9e..742ac95 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "build:composer": "npm run build -- composer", "build:react": "npm run build -- react", "build:redux": "npm run build -- redux", - "build:phpunit": "npm run build -- phpunit" + "build:phpunit": "npm run build -- phpunit", + "build:redis": "npm run build -- redis" }, "dependencies": { "@types/cheerio": "^0.22.18",