parameters: (self, singular, plural, variables, plural_expr,
                     vars_referenced, num_called_num)
return_statement: return nodes.Output([node])
docstring: Generates a useful node from the data provided.
docstring_summary: Generates a useful node from the data provided.
docstring_tokens: Generates a useful node from the data provided .
function: def _make_node(self, singular, plural, variables, plural_expr,
                     vars_referenced, num_called_num):
          """Generates a useful node from the data provided."""
          # no variables referenced?  no need to escape for old style
          # gettext invocations only if there are vars.
          if not vars_referenced and not self.environment.newstyle_gettext:
              singular = singular.replace('%%', '%')
              if plural:
                  plural = plural.replace('%%', '%')
  
          # singular only:
          if plural_expr is None:
              gettext = nodes.Name('gettext', 'load')
              node = nodes.Call(gettext, [nodes.Const(singular)],
                                [], None, None)
  
          # singular and plural
          else:
              ngettext = nodes.Name('ngettext', 'load')
              node = nodes.Call(ngettext, [
                  nodes.Const(singular),
                  nodes.Const(plural),
                  plural_expr
              ], [], None, None)
  
          # in case newstyle gettext is used, the method is powerful
          # enough to handle the variable expansion and autoescape
          # handling itself
          if self.environment.newstyle_gettext:
              for key, value in iteritems(variables):
                  # the function adds that later anyways in case num was
                  # called num, so just skip it.
                  if num_called_num and key == 'num':
                      continue
                  node.kwargs.append(nodes.Keyword(key, value))
  
          # otherwise do that here
          else:
              # mark the return value as safe if we are in an
              # environment with autoescaping turned on
              node = nodes.MarkSafeIfAutoescape(node)
              if variables:
                  node = nodes.Mod(node, nodes.Dict([
                      nodes.Pair(nodes.Const(key), value)
                      for key, value in variables.items()
                  ]))
          return nodes.Output([node])
function_tokens: def _make_node ( self , singular , plural , variables , plural_expr , vars_referenced , num_called_num ) : # no variables referenced?  no need to escape for old style # gettext invocations only if there are vars. if not vars_referenced and not self . environment . newstyle_gettext : singular = singular . replace ( '%%' , '%' ) if plural : plural = plural . replace ( '%%' , '%' ) # singular only: if plural_expr is None : gettext = nodes . Name ( 'gettext' , 'load' ) node = nodes . Call ( gettext , [ nodes . Const ( singular ) ] , [ ] , None , None ) # singular and plural else : ngettext = nodes . Name ( 'ngettext' , 'load' ) node = nodes . Call ( ngettext , [ nodes . Const ( singular ) , nodes . Const ( plural ) , plural_expr ] , [ ] , None , None ) # in case newstyle gettext is used, the method is powerful # enough to handle the variable expansion and autoescape # handling itself if self . environment . newstyle_gettext : for key , value in iteritems ( variables ) : # the function adds that later anyways in case num was # called num, so just skip it. if num_called_num and key == 'num' : continue node . kwargs . append ( nodes . Keyword ( key , value ) ) # otherwise do that here else : # mark the return value as safe if we are in an # environment with autoescaping turned on node = nodes . MarkSafeIfAutoescape ( node ) if variables : node = nodes . Mod ( node , nodes . Dict ( [ nodes . Pair ( nodes . Const ( key ) , value ) for key , value in variables . items ( ) ] ) ) return nodes . Output ( [ node ] )