roshan-research / moratab Goto Github PK
View Code? Open in Web Editor NEWPersian markdown editor.
Home Page: https://www.roshan-ai.ir/moratab/
License: Other
Persian markdown editor.
Home Page: https://www.roshan-ai.ir/moratab/
License: Other
نیاز به دکمهای داریم که مخاطب برای ارجاع دادن مجبور نباشه خودش هم شماره بزنه هم علامت ارجاع رو در متن بذاره
یه متد که مارکداون رو به یک صفحهٔ کامل تبدیل کنه چیز خوبی میتونه باشه. با این امکان که آدرس استایل رو بشه بهش داد یا اگه بهش داده نشد همون استایل پیشفرض رو خودش اضافه کنه.
در هنگام حذف کدهای اضافه از استکادیت، بخش پیشنمایش رو کاملا حذف کردیم. این کار چند تا دلیل داشت از جمله اینکه ویرایشگر قرار نیست تمام صفحه رو اشغال کنه و فضای کافی برای پیشنمایش تمام متن که ممکنه خیلی طولانی باشه نداریم. دلیل دیگرش هم این بود که برای پیشنمایش میخوایم از موتور تبدیل مارکدان خودمون استفاده کنیم
در حال حاضر ویرایشگر متن نوشته رو به قطعاتی تبدیل میکنه که با عنوانها جدا میشن. شاید یک پیشنهاد خوب پیشنمایش همین قطعهها باشه. البته واسط گرافیکش رو خودم هم خوب نمیتونم تصور کنم ولی به نظر میرسه بهتر از پیشنمایش یک متن بلند هست
خیلی خوب میشد اگر مرتب برای وردپرس هم بود. این افزونه هست ولی راست-به-چپ پشتیبانی نمیکنه
احتمال اینکه صفحه مرورگر به صورت اتفاقی بسته بشه کم نیست. باید دکمهای داشته باشیم که آخرین ویرایش نوشته رو بازیابی کنه
Is it possible to integrate Moratab with Boostnote, which is a great note taking app based on Markdown?
That would be great to use Boostnote with Persian support!
تنها راه نمایش مناسب جدولهای مارکدان استفاده از فونتی با فاصله حروف یکسان هست. به عبارت دیگه
monospace
باید یک فونت اینجوری پیدا کنیم که خوشگل هم باشه
اگه کلاس نوشتههای فارسی و انگلیسی مشخّص باشه خیلی راحت میشه با استایل مرتّبشون
کرد.
داکیومنتتون ضعیفه... یکی مثل من که هیچچی جاوااسکریپت نمیدونمم وجود داره
جدل گذاشتن کلا سخته و من یادم نمیآد نمونه خوبی دیده باشم برای این کار. حتی مال ورد هم جالب نیست
من هر کاری کردم نتونستم متن یونیکد رو تبدیل کنم. باید خیلی پیش پا افتاده باشه نه؟
moratab.render(open('README.md').read())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "moratab.py", line 66, in render
rendered = markdown.render(text)
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 904, in render
return self.parse(text)
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 907, in parse
out = self.output(preprocessing(text))
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 944, in output
out += self.tok()
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 966, in tok
return getattr(self, 'parse_%s' % t)()
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 984, in parse_heading
self.token['text'],
File "moratab.py", line 12, in header
return '<h%d%s>%s</h%d>\n' % (level, direction(text), text, level)
File "moratab.py", line 7, in <lambda>
direction = lambda html: ' dir="ltr"' if ltr.match(refine(html)) else ''
File "moratab.py", line 6, in <lambda>
refine = lambda html: refine(html[html.find('>')+1:]) if html.startswith('<') else html
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0: ordinal not in range(128)
بعد با خودم گفتم شاید باید یونیکد رو دیکد کنم؟
moratab.render(open('README.md').read().decode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "moratab.py", line 66, in render
rendered = markdown.render(text)
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 904, in render
return self.parse(text)
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 907, in parse
out = self.output(preprocessing(text))
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 944, in output
out += self.tok()
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 966, in tok
return getattr(self, 'parse_%s' % t)()
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 1061, in parse_paragraph
return self.renderer.paragraph(self.inline(self.token['text']))
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 490, in __call__
return self.output(text)
File "/usr/local/lib/python2.7/dist-packages/mistune.py", line 525, in output
output += out
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128)
برای این تبدیل باید سطرهایی که با حروف انگلیسی آغاز میشوند، با کلاس خاصی مشخص شوند تا درزمان نمایش بتوان آنها را چپ به راست نمایش داد.
این ویژگی زیاد مورد تقاضا بوده و مخصوصا برای غیربرنامهنویسها خیلی بدرد میخوره. خروجی ورد همون HTML هست به صورت خیلی خیلی کثیف. یعنی در واقع اگر از سایت دیگری هم کپی کنه، ما باید به مرتب تبدیلش کنیم.
پیادهسازی اولیهای از این ویژگی انجام دادم. اگرچه خروجی ورد اینقدر آشغال هست که هنوز زیاد کار داره. در حال حاضر، عناصر معمولی که انتظار تبدیلشون رو دارید شامل عنوان، نوشته درشت یا مورب، لیست، نقل قول، قطعه کد، پیوند و تصویر باید به قابل مرتب وارد بشن. همچنین جدول و پاورقی هم پشتیبانی میشن که خیلی ویژگی شاخی محسوب میشه.
ممنون میشم که دوستان تست کنن و بگن تبدیل در چه مواردی خوب نیست. اگرچه خودمون هم با خیلی از اشکالات مواجه شدیم و در حال رفع اونها هستیم.
این هم چالشیه برای خودش
ویرایشگر باید امکان آپلود تصویر را فراهم کند تا مخاطب مجبور نباشد خودش تصویر را آپلود کرده و آدرس آن را در صفحه بنویسد
برای شروع خوب است که از آپلود تصویر در این سرویس پشتیبانی کنیم
http://cloudinary.com/
اگرچه کد مختصری هم برای تحویل گرفتن تصویر در سرورهای اختصاصی نیاز داریم
تا حالا چند بار به صورت اتفاقی صفحه رو از دست دادم مثلا دکمه ریفرش رو زدم و نوشتهها هم پریدن، باید قبل از ترک صفحه از مخاطب تایید بگیریم؛ البته بعضی از چیزایی که این کار رو میکنن، رو اعصاب هستن
پاورقی مرسوم این طوری هست:
پاورقی[^footnote]
[^footnote]: Footnote
کاش میشد این طوری پاورقی زد:
پاورقی[^Footnote]
در حال حاضر از بوتاسترپ برای نمایش دکمهها و مدالها استفاده شده که میتونیم این بخشها رو از بوتاسترپ انتقال بدیم به کد ویرایشگر
این ویژگی در متنهای دانشگاهی اهمیت داره. اصلا شاید علامت # در مارکدان برای مشخص کردن عنوان، به معنی شمارهای باشه که در آینده قرار داده میشه
What's the plan?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.