โมดูลโหนดสำหรับนำเข้าข้อมูลจากเอกสารกระดาษดรอปบ็อกซ์และแปลงเป็นโครงสร้างข้อมูล json
create app
จากคอนโซลนักพัฒนาซอฟต์แวร์Dropbox API
Full Dropbox
News Mixer
document id
กระดาษดรอปบ็อกซ์เช่นหาก URL ของกระดาษดรอปบ็อกซ์ของคุณเป็นเช่นนั้น
https://paper.dropbox.com/doc/Main-Title-vJdrjMJAHdgfHz0rl83Z
จากนั้นองค์ประกอบสตริงสุดท้ายหลังจากสุดท้าย -
อ่านจากซ้ายไปขวาคือรหัสเอกสารของคุณ
ในตัวอย่างสมมตินี้ มันจะเป็น: vJdrjMJAHdgfHz0rl83Z
DROPBOX_ACCESS_TOKEN
ไปที่ .env
โปรเจ็กต์ใช้ dotenv เพื่อจัดการกับข้อมูลรับรองและตัวแปรสภาพแวดล้อม
ในรูทของโฟลเดอร์ repo ให้สร้างไฟล์ .env
ซึ่งจะถูกแยกออกจาก repo github โดย .gitignore
เพื่อหลีกเลี่ยงไม่ให้ข้อมูลประจำตัวรั่วไหล
ต่อไปนี้คือตัวอย่างรูปแบบไฟล์ .env
พร้อมด้วยข้อมูลประจำตัวสมมติบางส่วน
# Dropbox credentials
DROPBOX_ACCESS_TOKEN=vJdrjMJAHdgfHz0rl83ZvJdrjMJAHdgfHz0rl83Z
DROPBOX_DOC_ID=vJdrjMJAHdgfHz0rl83Z
โคลน repo นี้
git clone [email protected]:bbc/dropbox-paper-to-json.git
cd ลงในโฟลเดอร์
cd dropbox-paper-to-json
npm install
npm start
ซึ่งจะบันทึกไฟล์ data.json
ไว้ที่รากของโปรเจ็กต์
ติดตั้ง npm
npm install dropbox-paper-to-json@git+ssh://[email protected]/bbc/dropbox-paper-to-json.git#master -save
เพิ่มลงในฐานโค้ดของคุณ
//if using dotenv for environment variable credentials for dropbox paper
require ( 'dotenv' ) . config ( ) ;
// optional if you want to write the resulting json
const fs = require ( 'fs' ) ;
// require module
const dbpMdToJson = require ( 'dropbox-paper-to-json' ) ;
dbpMdToJson ( {
accessToken : process . env . DROPBOX_ACCESS_TOKEN ,
dbp_doc_id : process . env . DROPBOX_DOC_ID ,
// default for nested === true
nested : true
} ) . then ( ( data ) => {
console . log ( `done Dropbox Paper to JSON conversion` ) ;
// optional: now do something with the data
fs . writeFileSync ( './data.json' , JSON . stringify ( data , null , 2 ) ) ;
} ) ;
ภาพรวมระดับสูงของสถาปัตยกรรมระบบ
โมดูลใช้โมดูลโหนด dpb-download-md
เพื่อรับกระดาษดรอปบ็อกซ์เป็นมาร์กดาวน์โดยระบุรหัสกระดาษดรอปบ็อกซ์และโทเค็นการเข้าถึง
เนื่องจาก SDK อย่างเป็นทางการดูเหมือนจะไม่มีวิธีที่ตรงไปตรงมาในการเข้าถึงเนื้อหาเอกสารกระดาษดรอปบ็อกซ์
โมดูลย่อย md-to-json/linear.js
นำเนื้อหาของไฟล์มาร์กดาวน์เป็นสตริงและแปลงเป็นอาร์เรย์ของอ็อบเจ็กต์ ซึ่งแสดงถึงองค์ประกอบมาร์กดาวน์
มันเป็นโครงสร้างข้อมูลแบบเรียบ ไม่มีการซ้อน ดังนั้นเหตุใดบางครั้งจึงเรียกว่าเชิงเส้น
[
{
"text" : " Chapter 1 " ,
"type" : " h1 "
},
{
"text" : " Text " ,
"type" : " h2 "
},
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tellus ornare non. Aliquam non mauris purus. Cras a dignissim tellus. Cras pharetra, felis et convallis tristique, sapien augue interdum ipsum, aliquet rhoncus enim diam vitae eros. Cras ullamcorper, lectus id commodo volutpat, odio urna venenatis tellus, vitae vehicula sapien velit eu purus. Pellentesque a feugiat ex. Proin volutpat congue libero vitae malesuada. " ,
"type" : " p "
},
{
"text" : " Video " ,
"type" : " h2 "
},
...
]
สำหรับกรณีการใช้งานบางกรณี มันอาจจะยุ่งยากมากที่จะซ้อนองค์ประกอบทั้งหมดระหว่างแท็ก h1 ไปยัง h1 ถัดไปที่ถือเป็นพี่น้อง/ลูก/องค์ประกอบของแท็กนั้น
เช่น แท็ก h1 อาจมี h2, แท็ก p, ลิงก์ ฯลฯ
ในทำนองเดียวกัน แท็ก h2 อาจมีองค์ประกอบอื่นๆ ทั้งหมดจนถึงแท็ก h2 หรือ h1 ถัดไป
หมายเหตุ รสชาติกระดาษดรอปบ็อกซ์ของมาร์กดาวน์จะแสดงแท็ก H1
และ H2
ได้อย่างถูกต้องเท่านั้น ด้วยเหตุนี้เราจึงหยุดการซ้อนเพียงสองระดับสำหรับกรณีการใช้งานนี้ แต่สามารถซ้อนเพิ่มเติมได้หากมีกรณีการใช้งาน
ซึ่งทำได้ใน md-to-json/index.js
{
"title" : " TEST CMS " ,
"elements" : [
{
"text" : " Chapter 1 " ,
"type" : " h1 " ,
"elements" : [
{
"text" : " some text element between h1 and h2 tags " ,
"type" : " p "
},
{
"text" : " text " ,
"type" : " h2 " ,
"elements" : [
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tell. " ,
"type" : " p "
}
]
},
...
}
สำหรับตัวอย่างเต็ม โปรดดูที่ md-to-json/examples/example_output.json
วิธีรันสภาพแวดล้อมการพัฒนา
การอ้างอิงรูปแบบการเข้ารหัสเป็นทางเลือก เช่น ควรใช้ linter ใด
Linting, github pre-push hook - ไม่จำเป็น
.eslintrc.json
วิธีการรัน build
นา ?
วิธีดำเนินการทดสอบ
ความครอบคลุมการทดสอบขั้นต่ำโดยใช้ jest
สำหรับการทดสอบ เพื่อดำเนินการทดสอบ:
npm test
วิธีปรับใช้โค้ด/แอปในการทดสอบ/การจัดเตรียม/การผลิต
NA มันเป็นโมดูลโหนด
น่าเสียดายที่กระดาษของ Dropbox มีข้อบกพร่องในการลดราคาเป็นของตัวเอง ความแตกต่างที่เกี่ยวข้องและน่าสังเกตมากที่สุดบางประการคือ:
heading 1
ทั้งคู่มีเครื่องหมาย h1
/ #
Heading 3
แสดงเป็นตัวหนา **
แทน h3
/ ###
ดู md-to-json/examples/test.md
เป็นตัวอย่างของไฟล์มาร์กดาวน์รสชาติดรอปบ็อกซ์
H3
เนื่องจากมาร์กดาวน์กระดาษดรอปบ็อกซ์แสดงว่าเป็นตัวหนา **
h3
ถึง h6
เนื่องจากไม่ได้สร้างโดยมาร์กดาวน์กระดาษดรอปบ็อกซ์ การแยกวิเคราะห์แท็กรสชาติ GitHub ของ Markdown สำหรับรูปภาพ เช่น ![alt text](link url)
สิ่งเหล่านี้ปรากฏในบรรทัดของตัวเอง
การแยกวิเคราะห์แท็กรสชาติ GitHub ของมาร์กดาวน์สำหรับลิงก์ เช่น [text](link url)
โดยทั่วไปจะปรากฏเป็นส่วนหนึ่งของย่อหน้า แต่ก็อาจปรากฏในบรรทัดของตัวเอง หรือเป็นส่วนหนึ่งของส่วนหัว ฯลฯ