জাভাস্ক্রিপ্ট বংশগতি


109

আমার জাভাস্ক্রিপ্টে হেরডোকের মতো কিছু দরকার। আপনি কি এই জন্য কোন ধারণা আছে? আমার ক্রস ব্রাউজার কার্যকারিতা দরকার।

আমি এটি খুঁজে পেয়েছি:

heredoc = '\
<div>\
    <ul>\
        <li><a href="#zzz">zzz</a></li>\
    </ul>\
</div>';

আমি মনে করি এটি আমার পক্ষে কাজ করবে। :)


6
স্ট্যাকওভারফ্লো ডাব্লিকেট / প্রশ্ন / 805107/… যার আরও কিছু বিশদ উত্তর রয়েছে।
চাদউইক

4
"\" যুক্ত করা আমাকে প্রতিবার ভ্রূণ করে তোলে। তবে, মাল্টলাইন স্ট্রিংগুলির জন্য সাধারণ সিনট্যাক্স না থাকা সম্পূর্ণরূপে বেআইনী। এবং তারা এটি কোনও নির্দিষ্ট সংস্করণে যুক্ত করতে পারত, তবে তারা তা করেনি।
লেকস


আজকাল, এটি সম্ভাব্য নকল (এখানে কোনও আপডেটের উত্তর নেই) হিসাবে প্রদর্শিত টেমপ্লেট লিটারাল দিয়ে সম্পন্ন করা হয়।
brasofilo

উত্তর:


77

ব্যবহার করে দেখুন ES6 স্ট্রিং টেমপ্লেট তোমার মতোই কিছু করতে পারেন

var hereDoc = `
This
is
a
Multiple
Line
String
`.trim()


hereDoc == 'This\nis\na\nMultiple\nLine\nString'

=> true

আপনি এই মহান বৈশিষ্ট্য সঙ্গে করে আজই ব্যবহার করতে পারেন 6to5 বা টাইপ করা বিষয়


2
আপনি কেবল বহু-লাইন স্ট্রিং চাইলে এটি প্রযোজ্য। যাইহোক, যেহেতু আপনি আপনার স্ট্রিংটি আবদ্ধ প্রতীকটি সত্যই পরিবর্তন করতে পারবেন না, এটি সত্যই হেরডোক নয় not
পীযূষ কুশওয়াহ

3
ঠিক যেমন একটি নোট, মূল প্রশ্নটি ES6 উপলব্ধ হওয়ার আগে 5 বছর আগে জিজ্ঞাসা করা হয়েছিল। পারফরম্যান্সও ভাল হওয়ায় এটি এগিয়ে যাওয়ার সেরা অনুশীলন।
হেনরি তাসেং

2
@ হেনরিটসেং, তাই আপনি কি পরামর্শ দিচ্ছেন যে এই প্রশ্নের উত্তরগুলি 5 বছর আগে বিদ্যমান প্রাচীন প্রযুক্তির সাথে তৈরি করা উচিত? যদি প্রশ্নটি এখনও খোলা থাকে, তবে এটি সময়ের সাথে সাথে তৈরি হওয়ার সাথে সাথে নতুন প্রযুক্তির সুবিধা নেওয়ার অধিকারী। এইভাবে, একই সমস্যাযুক্ত নতুন ব্যবহারকারীরা এখানে "অ-প্রত্নতাত্ত্বিক" তথ্য খুঁজে পেতে পারেন।
asiby

1
না, আমি কেন আগে যে সমাধানটি আরও বিশিষ্ট হয়নি তা সম্পর্কে একটি মন্তব্য করছি। এটি নিশ্চিতভাবে মনে হয় সমর্থিত উপায়টির মতো এগিয়ে চলেছে যদি কোনও সামঞ্জস্যের সমস্যা না থাকে।
হেনরি তাসেং

63

না, দুর্ভাগ্যক্রমে জাভাস্ক্রিপ্ট হেরডোকের মতো কিছু সমর্থন করে না।


12
আমি জানি তবে আমি
হেরডোক

পার্স ফাংশনটির মন্তব্যের মতো কিছু (তবে এটি ie / ফায়ারফক্সে কাজ করে না) =
ভেরোলম

37

এটি সম্পর্কে:

function MyHereDoc(){
/*HERE
<div>
   <p>
      This is written in the HEREDOC, notice the multilines :D.
   </p>
   <p>
      HERE
   </p>
   <p>
      And Here
   </p>
</div>
HERE*/
    var here = "HERE";
    var reobj = new RegExp("/\\*"+here+"\\n[\\s\\S]*?\\n"+here+"\\*/", "m");
    str = reobj.exec(MyHereDoc).toString();
    str = str.replace(new RegExp("/\\*"+here+"\\n",'m'),'').toString();
    return str.replace(new RegExp("\\n"+here+"\\*/",'m'),'').toString();
}

//Usage 
document.write(MyHereDoc());

পছন্দের শব্দটির সাথে কেবল "/ * এখানে" এবং "এখানে * /" প্রতিস্থাপন করুন।


4
সমস্ত ব্রাউজার / ইঞ্জিনগুলি কি Function.toString () এ মন্তব্যগুলি ফেরত দেয়? এটি খুব চালাক
gcb

ক্রোমের কনসোলে কাজ করে
ওমন

4
যদি */আপনার বংশানুক্রমে একটি সমাপনী মন্তব্য থাকে তবে তা কাজ করবে না ।
নরিগো

2
আমি নেট ফেরেরোর উত্তরটি ব্যবহার করার পরামর্শ দেব, কারণ তার আরও পরিশ্রুত ও অনুকূলিতকরণের উদাহরণ। মাইন 3 টি পৃথক রেজেক্সেক্স কল ব্যবহার করে এবং ধারণার প্রমাণ হিসাবে এটি আরও বেশি।
Zv_oDD

1
খুব চালাক ... তবে আপনি ভবিষ্যতে এটি কাজ করবে এমন গ্যারান্টি দিতে পারবেন না। এটি একটি ভাল অনুশীলন হতে খুব বাস্তবায়ন নির্ভর is
পিয়েরে-অলিভিয়ের ভারেসে

33

Zv_oDD এর উত্তরে বিল্ডিং করে, আমি পুনরায় ব্যবহারের জন্য একই ধরণের ফাংশন তৈরি করেছি।

সতর্কতা: এটি অনেক জেএস দোভাষীদের একটি অ-মানক বৈশিষ্ট্য, এবং সম্ভবত কোনও সময়ে সরিয়ে দেওয়া হবে, তবে আমি কেবল ক্রোমে ব্যবহার করার জন্য একটি স্ক্রিপ্ট তৈরি করছি, তাই আমি এটি ব্যবহার করছি! ক্লায়েন্ট-মুখোমুখি ওয়েবসাইটগুলির জন্য এটির উপর কখনই নির্ভর করবেন না !

// Multiline Function String - Nate Ferrero - Public Domain
function heredoc(fn) {
  return fn.toString().match(/\/\*\s*([\s\S]*?)\s*\*\//m)[1];
};

ব্যবহার করুন:

var txt = heredoc(function () {/*
A test of horrible
Multi-line strings!
*/});

রিটার্নস:

"A test of horrible
Multi-line strings!"

মন্তব্য:

  1. পাঠ্যটি উভয় প্রান্তে ছাঁটা হয়েছে, সুতরাং উভয় প্রান্তে কোনও অতিরিক্ত সাদা স্থান ঠিক আছে।

সম্পাদনা:

2/2/2014 - ফাংশন প্রোটোটাইপটি নিয়ে মোটেও গোলযোগ না করে পরিবর্তিত হয়েছে এবং পরিবর্তে নাম হেরডোক ব্যবহার করুন।

5/26/2017 - আধুনিক কোডিং মানগুলিকে প্রতিবিম্বিত করতে হোয়াইটস্পেস আপডেট করা হয়েছে।


1
আমি এখানে ডক () কে আমার ফাংশন নাম হিসাবে ব্যবহার করব, তবে এই কোডটি আমার 40k লাইন লগ ডাম্পটি ক্রোমের কনসোলের একটি ভেরিয়েবলের মধ্যে লোড করে জরিমানা কাজ করেছিল
ওমন

আপনি কেন কোনও ফাংশনের উদাহরণ তৈরি করবেন এবং অবহিত সম্পত্তি __ প্রোটো __ অ্যাক্সেস করবেন? শুধু ফাংশন.প্রোটোটাইপ.স্ট্রাক্ট = ফাংশন () {...} কেন করবেন না?
জন কুর্লক

@ জনকুরলাক যে আরও ভাল! আমি মনে করি না আমি যখন উত্তরটি লিখলাম তখন আমি সচেতন ছিলাম possible
নাট ফেরেরো 12

2
@ নেটফেরেরো - দুর্দান্ত উত্তর, ধন্যবাদ! পৃথক উত্তর হিসাবে আমার নিজের একটি এক্সটেনশান যুক্ত হয়েছে।
অ্যান্ড্রু চেং

আমার অ্যান্ড্রয়েড, নেক্সাস 4, 5.0.1 চলছে, এটি আর Chrome এ কাজ করে না। কিছু কারণে এটি সাদা স্থান এবং মন্তব্য মুছে ফেলছে। আমি এটি একটি সেটিংস কিনা তা বুঝতে পারি না, তবে এটি অবশ্যই ক্লায়েন্টের পক্ষে। কাজের জন্য কোন ধারণা?
এমএলইউ

19

আপনি যে জেএস / জেএস ইঞ্জিনটি চালাচ্ছেন তার উপর নির্ভর করে (স্পাইডারমোনকি, এএস 3) আপনি কেবল ইনলাইন এক্সএমএল লিখতে পারেন, যার মাধ্যমে আপনি একাধিক লাইনে যেমন পাঠ্য রাখতে পারেন হেরডোক:

var xml = <xml>
    Here 
    is 
    some 
    multiline 
    text!
</xml>

console.log(xml.toXMLString())
console.log(xml.toString()) // just gets the content

13

ES6 টেমপ্লেট স্ট্রিংগুলির বংশগত বৈশিষ্ট্য রয়েছে।

আপনি ব্যাক-টিক (``) দ্বারা আবদ্ধ স্ট্রিংগুলি ঘোষণা করতে পারেন এবং একাধিক লাইনের মাধ্যমে প্রসারিত হতে পারে।

var str = `This is my template string...
and is working across lines`;

আপনি টেমপ্লেট স্ট্রিংগুলির মধ্যে প্রকাশও অন্তর্ভুক্ত করতে পারেন। এগুলি ডলারের চিহ্ন এবং কোঁকড়ানো ধনুর্বন্ধনী দ্বারা চিহ্নিত করা হয় ( ${expression})।

var js = "Java Script";
var des = `Template strings can now be used in ${js} with lot of additional features`;

console.log(des); //"Template strings can now be used in Java Script with lot of additional features"

এটিতে ট্যাগড টেম্পল স্ট্রিংস এবং কাঁচা স্ট্রিংয়ের মতো আরও বৈশিষ্ট্য রয়েছে। এখানে ডকুমেন্টেশন সন্ধান করুন

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings


8

কেবলমাত্র ন্যাটফেরেরোর উত্তরের জন্য পৃথক উত্তর লিখতে আমার খারাপ লাগছে , তবে আমি উত্তরটি তার পক্ষে সম্পাদনা করা যথাযথ বলে মনে করি না, সুতরাং দয়া করে উত্তরটি যদি নাটফেরেরো উপযোগী হয় তবে আপলোড করুন।

tl; dr who যারা তাদের বংশের ভিতরে ব্লক মন্তব্য ব্যবহার করতে চান তাদের জন্য ...

আমি প্রধানত জাভাস্ক্রিপ্ট heredocs প্রয়োজন সিএসএস, একটি ব্লক সঞ্চয় করতে উদাঃ

var css = heredoc(function() {/*
    /**
     * Nuke rounded corners.
     */
    body div {
        border-top-left-radius: 0 !important;
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
    }
*/});

আপনি যাইহোক দেখতে পাচ্ছেন, আমি আমার সিএসএস মন্তব্য করতে চাই, এবং দুর্ভাগ্যক্রমে (সিনট্যাক্স হাইলাইট দ্বারা ইঙ্গিতযুক্ত) প্রথমে */সামগ্রিক মন্তব্যটি শেষ করে, হেরডোকটি ভেঙে।


এই নির্দিষ্ট উদ্দেশ্যে (সিএসএস) জন্য, আমার কাজটি যুক্ত করা ছিল

.replace(/(\/\*[\s\S]*?\*) \//g, '$1/')

@ নেটফেরেরোর ভিতরে শৃঙ্খলে heredoc; সম্পূর্ণ আকারে:

function heredoc (f) {
    return f.toString().match(/\/\*\s*([\s\S]*?)\s*\*\//m)[1].replace(/(\/\*[\s\S]*?\*) \//g, '$1/');
};

এবং তাদের মধ্যে একটি স্থান যোগ করে এটিকে ব্যবহার *এবং /জন্য "ভেতরের" ব্লক মন্তব্য, যেমন:

var css = heredoc(function() {/*
    /**
     * Nuke rounded corners.
     * /
    body div {
        border-top-left-radius: 0 !important;
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
    }
*/});

replaceকেবল খুঁজে বের করে /* ... * /এবং করতে ব্যবধান সরায় /* ... */ফলে heredoc সংরক্ষণের পর্যন্ত বলা হয়।


আপনি অবশ্যই সম্পূর্ণভাবে ব্যবহার করে মন্তব্যগুলি মুছে ফেলতে পারেন

.replace(/\/\*[\s\S]*?\* \//g, '')

আপনি //মন্তব্যগুলিকে শৃঙ্খলে যুক্ত করলে আপনি তাদের সমর্থনও করতে পারেন :

.replace(/^\s*\/\/.*$/mg, '')

এছাড়াও, আপনি মধ্যে একক স্থান ছাড়া অন্য কিছু করতে পারেন *এবং /একটি মত, -:

    /**
     * Nuke rounded corners.
     *-/

আপনি যদি সঠিকভাবে রেজেক্সটি আপডেট করেন:

.replace(/(\/\*[\s\S]*?\*)-\//g, '$1/')
                          ^

অথবা আপনি কি কোনও একক জায়গার পরিবর্তে স্বতঃস্ফূর্ত পরিমাণের একটি স্বতন্ত্র পরিমাণ চান?

.replace(/(\/\*[\s\S]*?\*)\s+\//g, '$1/')
                          ^^^

2
শান্ত! এটি আমার পদ্ধতির একটি পরিচিত সীমাবদ্ধতা ছিল, আমি এটি পছন্দ করি :)
নেট ফেরেরো

8

আপনি কফিস্ক্রিপ্ট ব্যবহার করতে পারেন , যা জাভা স্ক্রিপ্টে সংকলিত একটি ভাষা। কোডটি এক থেকে একটিকে সমমানের জেএসে সংকলন করে, এবং রানটাইমে কোনও ব্যাখ্যা নেই।

এবং অবশ্যই, এর বংশগতি আছে :)


24
সঠিক উত্তরটি হ'ল না। কফিস্ক্রিপ্ট এবং ইজেএস পরামর্শ হিসাবে ব্যবহার করা যেতে পারে।
alvincrespo

4
কফিস্ক্রিপ্ট বেশিরভাগ জেএস সমস্যার মুখোমুখি হওয়ার সঠিক উত্তর। আপনি যদি জেএসের একটি তুচ্ছ পরিমাণের চেয়ে বেশি লেখেন (এবং আপনি নিজের সময় এবং শক্তিকে মূল্য দেন) তবে এটি ব্যবহার করার জন্য আপনার নিজের এটি owণী।
ব্র্যান্ডন

5
আমি মনে করি এটি একটি ভাল উত্তর কারণ এটি জাভাস্ক্রিপ্টে হেরডোকের অনুপস্থিতি রোধ করার একটি সহজ উপায় সরবরাহ করে। আমাকে অনেক সময় বাঁচিয়েছে।
স্টোফকে

3
আপনি যদি কেবল জেএস-এর একটি অংশ চান তবে আসলে এটি লেখার সাথে মোকাবিলা করতে চান না: coffeescript.org এবং "চেষ্টা করুন কফিস্ক্রিপ্ট" বোতামটি ব্যবহার করুন।
jcollum

1
এটি সর্বোচ্চ রেটযুক্তটির চেয়ে একটি উত্তর, যা মূলত ঠিক ... "না"। আমি এই ধরনের উত্তর ঘৃণা করি।
ম্যাট ফ্লেচার

7

ES5 এবং পূর্ববর্তী সংস্করণ

(function(){/**
some random
multi line
text here
**/}).toString().slice(15,-5);

ES6 এবং পরবর্তী সংস্করণগুলি

`some random
multi line
text here`

ফলাফল

some random
multi line
text here

সেরা সহজ উত্তর
বেনিয়ামিন

1
পুরানো স্টাইলের জিনিসটি একটি অবিশ্বাস্যভাবে নির্মম হ্যাক: /
শায়েন

1

এই পোস্টে টিম ডিজনি দ্বারা তৈরি করা হিসাবে আপনি এটির মতো যোগ করতে Sweet.js ম্যাক্রো ব্যবহার করতে পারেন

নোট করুন যে এই পদ্ধতির পরিবর্তে স্ট্রিং ডিলিমিটার হিসাবে ব্যাকটিক্স ব্যবহার করা হয়েছে:

let str = macro {
    case {_ $template } => {
        var temp = #{$template}[0];
        var tempString = temp.token.value.raw;
        letstx $newTemp = [makeValue(tempString, #{here})];
        return #{$newTemp}
    }
}

str `foo bar baz`

1

অন্যরা যেমন বলেছে, ES6 টেম্পলেট স্ট্রিংগুলি আপনাকে সনাতন হেরডোকগুলি যা সরবরাহ করে তার বেশিরভাগ অংশ দেয়।

আপনি যদি আরও এক ধাপ এগিয়ে যেতে চান এবং ট্যাগযুক্ত টেম্পলেট স্ট্রিংটি ব্যবহার করতে চান theredocতবে একটি দুর্দান্ত ইউটিলিটি ফাংশন যা আপনাকে এটি করতে দেয়:

if (yourCodeIsIndented) {
  console.log(theredoc`
    Theredoc will strip the
    same amount of indentation
    from each line.

      You can still indent
      further if you want.

    It will also chop off the
    whitespace-only first and
    last lines.
  `)
}

0

যদি আপনার হাতে কিছু এইচটিএমএল এবং jQuery থাকে এবং স্ট্রিংটি বৈধ এইচটিএমএল হয় তবে এটি কার্যকর হতে পারে:

<div id="heredoc"><!--heredoc content
with multiple lines, even 'quotes' or "double quotes",
beware not to leave any tag open--></div>
<script>
var str = (function() {
   var div = jQuery('#heredoc');
   var str = div.html();
   str = str.replace(/^<\!--/, "").toString();
   str = str.replace(/-->$/, "").toString();
   return str;
})();
</script>

যদি পাঠ্যের মধ্যে "<! ->>" এর মধ্যে মন্তব্য থাকে তবে এটি পাশাপাশি কাজ করে তবে পাঠ্যের একটি অংশ দৃশ্যমান হতে পারে। এই হিটটি এখানে: https://jsfiddle.net/hr6ar152/1/


0
// js heredoc - http://stackoverflow.com/a/32915549/466363
// a function with comment with eval-able string, use it just like regular string

function extractFuncCommentString(func,comments) {
  var matches = func.toString().match(/function\s*\(\)\s*\{\s*\/\*\!?\s*([\s\S]+?)\s*\*\/\s*\}/);
  if (!matches) return undefined;
  var str=matches[1];

   // i have made few flavors of comment removal add yours if you need something special, copy replacement lines from examples below, mix them
  if(comments===1 )
  {
   // keep comments, in order to keep comments  you need to convert /**/ to / * * / to be able to put them inside /**/ like /*    / * * /    */
   return (
    str
   .replace(/\/\s\*([\s\S]*?)\*\s\//g,"/*$1*/") //       change   / * text * /  to   /* text */ 
   )
  }
  else if(comments===2)
  {
   // keep comments and replace singleline comment to multiline comment
   return (
    str
   .replace(/\/\s\*([\s\S]*?)\*\s\//g,"/*$1*/") //       change   / * text * /  to   /* text */ 
   .replace(/\/\/(.*)/g,"/*$1*/")          //           change   //abc to  /*abc*/
   )
  }
  else if(comments===3)
  {
   // remove comments
   return (
      str
      .replace(/\/\s\*([\s\S]*?)\*\s\//g,"") //       match / * abc * /
      .replace(/\/\/(.*)/g,"")             // match //abc
     )
  }
  else if(comments===4)
  {
   // remove comments and trim and replace new lines with escape codes
   return (
      str
      .replace(/\/\s\*([\s\S]*?)\*\s\//g,"") //       match / * abc * /
      .replace(/\/\/(.*)/g,"")             // match //abc
      .trim() // after removing comments trim and:
      .replace(/\n/g,'\\n').replace(/\r/g,'\\r') // replace new lines with escape codes. allows further eval() of the string, you put in the comment function: a quoted text but with new lines
     )
  }
  else if(comments===5)
  {
   // keep comments comments and replace strings, might not suit when there are spaces or comments before and after quotes 
   // no comments allowed before quotes of the string
   return (
      str
      .replace(/\/\s\*([\s\S]*?)\*\s\//g,"/*$1*/") //       change   / * text * /  to   /* text */
      .replace(/\/\/(.*)/g,"/*$1*/")          //           change   //abc to  /*abc*/
      .trim() // trim space around quotes to not escape it and:
      .replace(/\n/g,'\\n').replace(/\r/g,'\\r') // replace new lines with escape codes. allows further eval() of the string, you put in the comment function: a quoted text but with new lines
     )
  }
  else 
  return str
}

উদাহরণ

var week=true,b=123;
var q = eval(extractFuncCommentString(function(){/*!

// this is a comment     


'select 

/ * this
is a multiline 
comment * /

 a
,b  // this is a comment  
,c
from `table`
where b='+b+' and monthweek="'+(week?'w':'m')+'" 
//+' where  a=124
order by a asc
'
*/},4));

ক্যাশে সহ: - একটি সাধারণ টেম্পলেট ফাংশন করুন এবং ফাংশনটি সংরক্ষণ করুন: (দ্বিতীয়বার দ্রুত কাজ করে)

var myfunction_sql1;
function myfunction(week,a){


    if(!myfunction_sql1) eval('myfunction_sql1=function(week,a){return ('+extractFuncCommentString(function(){/*!
'select 

/ * this
is a multiline 
comment * /

 a
,b  // this is a comment  
,c
from `table`
where b='+b+' and monthweek="'+(week?'w':'m')+'" 
//+' where  a=124
order by a asc

'*/},4)+')}');
    q=myfunction_sql1(week,a);
    console.log(q)
}
myfunction(true,1234)

1
এফএফ এবং ক্রোমে বেশ ভিন্ন ফলাফল।
ডেভ নিউটন 21

নতুন কি? সবেমাত্র ক্রোম এবং এফএফ পরীক্ষিত এবং আমি ঠিক একই ফলাফল পেতে। ক্রোম বাদে ক্রোমের কনসোলে কোনও নতুন লাইন নেই যদি আপনি কেবল বর্ণ নামটি টাইপ করেন। তবে ভেরিয়েবল একই।
কনসোল.লগ

0

আমি এই সংস্করণটি পোস্ট করছি কারণ এটি এতটা তুচ্ছ জিনিসের জন্য রেগেক্সের ব্যবহার এড়ানো হয়।

আইএমএইচও রেজেক্স হ'ল একটি আবদ্ধতা যা পার্ল বিকাশকারীদের মধ্যে ব্যবহারিক রসিকতা হিসাবে তৈরি হয়েছিল। সম্প্রদায়ের বাকী অংশগুলি তাদের গুরুত্ব সহকারে নিয়েছে এবং আমরা এখন কয়েক দশক পরে এই মূল্যটি প্রদান করি। লিগ্যাসি কোড সহ পশ্চাদপদ সামঞ্জস্যতা ব্যতীত রিজেক্স ব্যবহার করবেন না। এই দিনগুলিতে এমন কোনও কোড লিখার অজুহাত নেই যা তাৎক্ষণিকভাবে মানব পাঠযোগ্য এবং বোধগম্য নয়। রেজেক্স প্রতিটি স্তরে এই নীতি লঙ্ঘন করে।

আমি ফলাফলটি বর্তমান পৃষ্ঠায় যুক্ত করার উপায়ও যুক্ত করেছি, এটির জন্য জিজ্ঞাসা করা হয়নি।

function pretty_css () {
/*
    pre { color: blue; }

*/
}
function css_src (css_fn) {
   var css = css_fn.toString();
   css = css.substr(css.indexOf("/*")+2);
   return css.substr(0,css.lastIndexOf("*/")).trim();
}

function addCss(rule) {
  let css = document.createElement('style');
  css.type = 'text/css';
  if (css.styleSheet) css.styleSheet.cssText = rule; // Support for IE
  else css.appendChild(document.createTextNode(rule)); // Support for the rest
  document.getElementsByTagName("head")[0].appendChild(css);
}

addCss(css_src(pretty_css));

document.querySelector("pre").innerHTML=css_src(pretty_css);
<pre></pre>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.