Less.js: рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмрдирд╛рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдлрд╝рд░ре░ 2012  ┬╖  28рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: less/less.js

рдирдорд╕реНрддреЗ,

Custome рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ:

  darkfadein(<strong i="7">@color</strong>, @value) {
    return fadein(darken(<strong i="8">@color</strong>, @value));
  }

  .foo {
    color: darkfadein(#333, 10%);
  }

рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

  .foo {
    color: #1a1a1a;
  }
consider closing feature request low priority

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдПрдХ рд╣реИрдХ рдорд┐рд▓рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

<strong i="6">@fn</strong>: ~`fn = function(a)┬а{ return a; }`;

<strong i="7">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

рд╕рднреА 28 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╢рд╛рдпрдж рдЗрд╕реЗ рдорд┐рдХреНрд╕-рдЗрди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдФрд░ CSS рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдХрд░реАрдм рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

@darkfadein(<strong i="6">@color</strong>, @value): fadein(darken(<strong i="7">@color</strong>, @value));

рдПрдХ рдЪрд░ рдХреА рддрд░рд╣ рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ =)

+1 рд╕реЗ @souldreamer рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ред

рд▓реЗрдХрд┐рди @souldreamer рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛
рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдорд╛рди рдФрд░ рдЙрдирдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  @darkfadein(<strong i="9">@color</strong>, @value) {
     <strong i="10">@foo</strong>: darken(<strong i="11">@color</strong>, @value);
     return: fadein(@foo);
  }

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ:

  @darkfadein(<strong i="15">@color</strong>, @value) {
     <strong i="16">@foo</strong>: darken(<strong i="17">@color</strong>, @value);
     for(<strong i="18">@i</strong> = 0; <strong i="19">@i</strong> < 5; @i++): {
       <strong i="20">@foo</strong>: darken(<strong i="21">@foo</strong>, @i);
     };
     return: fadein(@foo);
  }

рдореБрдЭреЗ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдПрдХ рд╕рдорд╛рдзрд╛рди рд╡реИрд░рд┐рдПрдмрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд @Deltachaos рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣реИ:

@grid-width(<strong i="7">@columns</strong>, @column-width) {
    <strong i="8">@computedWidth</strong> = @columns*@column-width;
    return @computedWidth;
}
div {
    width: @grid-width(6,60);
}

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдорд┐рдХреНрд╕рд┐рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЪреВрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдорд┐рдХреНрд╕рд┐рдиреНрд╕ рдХреЛ рд╡реИрд╕реЗ рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ, _ return рдлреАрдЪрд░ рдХреЛ рдорд┐рдХреНрд╕рд┐рдиреНрд╕_ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдЙрдкрд╛рдп рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

.grid-width(<strong i="13">@columns</strong>, @column-width) {
    <strong i="14">@computedWidth</strong> = @columns*@column-width;
    return @computedWidth;
}
div {
    width: .grid-width(6,60);
}

рдПрд╕рдПрдПрд╕рдПрд╕ рдХреЗ "рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд┐рд░реНрджреЗрд╢" рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдорд┐рд╢реНрд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред

рдЕрдВрдХ 508 рдФрд░ 609 рднреА рдЗрд╕реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @tylertate рдХрд╛ рджреВрд╕рд░рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд┐рд╢реНрд░рд┐рдд рдорд┐рд╢реНрд░рдг рд╣реИрдВред

рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд╢реНрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

.grid-width(<strong i="8">@columns</strong>, @column-width) {
    <strong i="9">@computedWidth</strong> = @columns*@column-width;
    for (var i = 0; i <= 36; i++) {
      <strong i="10">@computedWidth</strong> = darken(<strong i="11">@computedWidth</strong>, i);
    }
    return @computedWidth;
}
div {
    width: .grid-width(6,60);
}

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрдо рдкреНрд▓рдЧрдЗрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ-рдЬреИрд╕реЗ рддрд░реНрдХ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдо рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпреЗ рд╕реБрдЭрд╛рд╡ рд╡рд░реНрддрдорд╛рди LESS рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИрдВред

рд╕рд╣рдордд .. рдЙрд╕ рдЪрд┐рд╣реНрдирд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИред

рддреЛ рд╕рдВрдХрд▓реНрдк рдХреНрдпрд╛ рдерд╛?

рд╣рдореЗрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рджреЗрдЦреЗрдВ https://github.com/cloudhead/lesscss.org/issues/54

рдФрд░ less.js рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдо рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

less = { functions: { rgbstr: function (color) {var str = color; return new(less.tree.Quoted)('"' + str + '"', str,true,1);}}};

рдлрд┐рд▓рд╣рд╛рд▓ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд▓рдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ LESS рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рдг рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдРрд╕рд╛ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЬреЛ рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреЛ @Deltachaos рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд╕реНрддрд░ рдХреЛ рдЧрд┐рд░рд╛рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдмрд╛рдд рд╣реИ - рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓реВрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ рдпрд╛ рдЕрдЧрд░ рдЗрд╕реЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде 3 рдХрдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдбреАрдЖрд░рд╡рд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдЗрд╕ рддрдереНрдп рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЬрдЧрд╣ рдкрд░ рел% рдЕрдВрдзреЗрд░рд╛ рд╣реЛ рдЬрд╛рдПред

рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗред

рдлрд┐рд▓рд╣рд╛рд▓ рдорд┐рдХреНрд╕рд┐рди рд╕реНрдХреЛрдк рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рднреА рдмрд╛рд╣рд░реА рд╕реНрдХреЛрдк рдореЗрдВ рдХреЙрдкреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ - рдЬреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ .. рд▓реЗрдХрд┐рди рдпрд╣ рднрдпрд╛рдирдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

#538 . рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ

"рдорд┐рдХреНрд╕рд┐рди рд╕реНрдХреЛрдк рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рднреА рдмрд╛рд╣рд░реА рд╕реНрдХреЛрдк рдореЗрдВ рдХреЙрдкреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ"

рдЙрд╣, рд╕рдЪ рдореЗрдВ? рд╣рд╛рдВ, рдЖрдЗрдП рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЪрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛрдВ, рдпрд╛ рдХреЗрд╡рд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реАрдХрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред рдЪрд░ рдмреНрд▓реЙрдХ-рд╕реНрдХреЛрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдБ, рдпрд╣ рдмреИрдХ рдбреЛрд░ рдмрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣ рд╣реИ

рдореБрдЭреЗ рдПрдХ рд╣реИрдХ рдорд┐рд▓рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

<strong i="6">@fn</strong>: ~`fn = function(a)┬а{ return a; }`;

<strong i="7">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

@fabienevain рдХреЛ рдЕрднреА рд╡рд╣реА рд╣реИрдХ рдорд┐рд▓рд╛ рд╣реИ :)

@fabienevain рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж ~: +1:

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдк process.mainModule рддрдХ рдкрд╣реБрдВрдЪ рдХрд░ рд╣реА eval рдЬреЗрд▓ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ... рдХреЗрд╡рд▓ рдкрдХрдбрд╝ рдЖрдк рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ process.mainModule.children рдФрд░ рдореИрдЪ less.js рдЕрдЧрд░ рдореЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЖрджреЗрд╢ рднрд╡рд┐рд╖реНрдпред рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдХрдо рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рддреАрд╕рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЖрдк require рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк fs рдФрд░ рдЕрдиреНрдп рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╣реИ:

<strong i="10">@anything</strong>: `(function() {
    // console.log(process.mainModule.children[0].exports); // node fs is here
    // console.log(process.mainModule.children[2].children) // children of less, more node modules!
    var less = process.mainModule.children[2].exports;

    less.functions.functionRegistry.add("firstfunc", function(a, context) {
        // console.log(a, context);
        return new less.tree.Color("00ff00");
    });

    less.functions.functionRegistry.add("secondfunc", function(a, context) {
        // console.log(a, context);
        return new less.tree.Color("ff0000");
    });
})()`;


test {
    background: firstfunc(white);
    color: secondfunc(black);
}

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдл рдмрд╛рдд рдпрд╣ context рдЪрд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рд╕рджрд╛рд░ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреИрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдХрд╛ рдПрд╕рд╡реАрдЬреА рдбреЗрдЯрд╛ рдпреВрд░реА рдЖрдпрд╛рдд рдмрдирд╛ рд╕рдХреЗрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЬреЗрдПрд╕ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рддреЛ рдмреИрдХрдЯрд┐рдХреНрд╕ рднреА рдХреНрдпреЛрдВ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдЕрдкрдиреЗ LESS рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдВ рдЕрдкрдиреЗ LESS рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВред

рддреЛ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб _is_ "рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп" рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЗрдирд▓рд╛рдЗрди рдмреИрдХрдЯрд┐рдХ рд╣реИрдХреНрд╕ рдореЗрдВ рдиреЛрдб.рдЬреЗрдПрд╕-рдЖрдзрд╛рд░рд┐рдд рдХрдо.рдЬреЗрдПрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ? рджреЛрд╣!

@ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо рдореЗрд░реЗ рдЙрдкрдХрд░рдг рдмрд╣реБрдд рдЧрдбрд╝рдмрдбрд╝ рд╣реИрдВред рдЕрдЧрд░ рдореИрдВ рдХрдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рд╢рд╛рдпрдж рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред (рдпрд╛ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ) рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХреНрд▓рд┐рдкреНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ ~ 100 WP рдереАрдо рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдореИрдВ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдЖрджрд┐ рд╡рд╣рд╛рдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВред .

@Ciantic рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ (# 2479)ред рдорд╛рдзреНрдпрдорд┐рдХ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЬреЛ рднреА рдЧрд╣рд░рд╛ рдЦрд░рд╛рдм рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЖрдЦрд┐рд░рдХрд╛рд░ lessc "рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп" рдХреЗрд╡рд▓ рдПрдХ рдУрдПрд╕ рдХрдВрд╕реЛрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ _anything_ рдХреЛ рдПрдХ рддрд░рдл рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА "рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдо рдкреНрд▓рдЧрдЗрдиреНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереА рд╕рд▓рд╛рд╣ред рдЬрдмрдХрд┐ рдпрд╣ рдЯреВрдЯреЗ рд╣реБрдП рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рдордХрд╛рдЬ рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИред

@ рд╕рд╛рдд-рдЪрд░рдг-рдЕрдзрд┐рдХрддрдо рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЙрдкрдХрд░рдг рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрджрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдирд╣реАрдВ, рдЗрд╕ рддрд░рд╣ рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЕрд░рдмреЛрдВ рдХрдо рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред

@Ciantic

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрджрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдирд╣реАрдВ, рдЗрд╕ рддрд░рд╣ рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднреАрддрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЕрд░рдмреЛрдВ рдХрдо рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдЖрдЧреЗ рдкрдврд╝реЗрдВред рдореЗрд░реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╕реМрджрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдЖрд╕рд╛рди рдорд╛рд░реНрдЧ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕реНрдХреЛрдк-рд╕реНрдерд╛рдиреАрдп рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

.my-mixin() {
  <strong i="10">@plugin</strong> "my-func.js";
  <strong i="11">@value</strong> : my-func();
}

рдорд┐рд╢реНрд░рдг рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ my-func рд▓реАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкрде рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рднреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ @plugin рдШреЛрд╖рдгрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдЙрдкрднреЛрдЧ рдХреЗ рд▓рд┐рдП рд╢рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; резрежреж% _рдкрд╛рд░рджрд░реНрд╢реА_ред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣реА рдореЗрд░рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд▓рдХреНрд╖реНрдп рдерд╛ред ^_^

рдХрд╕реНрдЯрдо рд░рдВрдЧ рд╕рдВрдпреЛрдЬрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП less.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреЛрдб рдХрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ
рдпрд╣ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрдо рдХреА рдЬрд░реВрд░рдд рд╣реИредjs

рдореБрдЭреЗ рдПрдХ рд╣реИрдХ рдорд┐рд▓рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

<strong i="7">@fn</strong>: ~`fn = function(a)┬а{ return a; }`;

<strong i="8">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

@fabienevain рдореИрдВ @fn рдореЗрдВ рдХрдо рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЬреИрд╕реЗ hsvsaturation уАБ unit рдФрд░ рдЗрд╕реА рддрд░рд╣ .Thxред

@hiyangguo

рдЖрдкрдХреЛ рдЗрдирд▓рд╛рдЗрди JS рдПрдХреНрд╕рдкреНрд░реЗрд╢рди, рдЕрд╡рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝реЗрдВред рдпрд╣ рд╕рдм рд╡рд╣рд╛рдБ рд╣реИ: http://lesscss.org/features/#plugin -atrules-feature

@rjgotten рдареАрдХ рд╣реИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

MarkSG93 picture MarkSG93  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

papandreou picture papandreou  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pknepper picture pknepper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rejas picture rejas  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BrianMulhall picture BrianMulhall  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ