وحدة عقدة لاستيراد البيانات من مستند ورقي لصندوق الإسقاط وتحويلها إلى بنية بيانات 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
، ويتم استبعاده من github repo بواسطة .gitignore
لتجنب تسرب بيانات الاعتماد.
إليك نموذجًا لتنسيق ملف .env
، مع بعض بيانات الاعتماد الوهمية
# Dropbox credentials
DROPBOX_ACCESS_TOKEN=vJdrjMJAHdgfHz0rl83ZvJdrjMJAHdgfHz0rl83Z
DROPBOX_DOC_ID=vJdrjMJAHdgfHz0rl83Z
استنساخ هذا الريبو
git clone [email protected]:bbc/dropbox-paper-to-json.git
القرص المضغوط في المجلد
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
.
كيفية تشغيل بيئة التطوير
مرجع أسلوب الترميز اختياري، على سبيل المثال، أي نوع من الوبر يجب استخدامه
البطانة، خطاف الدفع المسبق لـ github - اختياري
.eslintrc.json
كيفية تشغيل البناء
غير متوفر ?
كيفية إجراء الاختبارات
الحد الأدنى من تغطية الاختبار باستخدام jest
للاختبار لإجراء الاختبارات:
npm test
كيفية نشر الكود/التطبيق في الاختبار/التدريج/الإنتاج
NA، إنها وحدة عقدة.
من المؤسف أن ورق Dropbox له عيوبه الخاصة المتمثلة في تخفيض السعر. بعض الاختلافات الأكثر أهمية وملحوظة هي:
heading 1
بعلامة h1
/ #
.Heading 3
بالخط العريض **
بدلاً من h3
/ ###
. راجع md-to-json/examples/test.md
كمثال لملف تخفيض نكهة Dropbox.
H3
، نظرًا لأن علامة التجزئة الورقية لصندوق الإسقاط تمثلها بالخط العريض **
h3
إلى h6
حيث لم يتم إنشاؤها بواسطة تخفيض سعر ورق صندوق الإسقاط. تحليل علامات نكهة github للصور، على سبيل المثال ![alt text](link url)
. تظهر هذه على الخط الخاص بهم.
تحليل علامات نكهة github للروابط، على سبيل المثال، [text](link url)
تظهر هذه بشكل عام كجزء من فقرة، ولكن يمكن أن تظهر أيضًا في سطر خاص بها، أو كجزء من عنوان وما إلى ذلك.