text:
# UI5 CLI
## Installing the UI5 CLI
### Requirements
-   [Node.js](https://nodejs.org/) (**version 10 or higher** ⚠)

### Installation
```sh
npm install --global @ui5/cli

# Verify installation
ui5 --help
```

## CLI Usage
### Overview
```
Usage: ui5 <command> [options]

Commands:
  ui5 add [--development] [--optional] <framework-libraries..>
      Add SAPUI5/OpenUI5 framework libraries to the project
        configuration.

  ui5 build
      Build project in current directory

  ui5 init
      Initialize the UI5 Tooling configuration for an application or
        library project.

  ui5 remove <framework-libraries..>
      Remove SAPUI5/OpenUI5 framework libraries from the
        project configuration.

  ui5 serve
      Start a web server for the current project

  ui5 tree
      Outputs the dependency tree of the current project to stdout. It
        takes all relevant parameters of ui5 build into account.

  ui5 use <framework-info>
      Initialize or update the project's framework configuration.

  ui5 versions
      Shows the versions of all UI5 Tooling modules

Options:
  --help, -h               Show help  [boolean]
  --version, -v            Show version number  [boolean]
  --config                 Path to configuration file  [string]
  --translator, --t8r      Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
  --verbose                Enable verbose logging.[boolean]
  --loglevel, --log-level  Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]

Examples:
  ui5 <command> --translator static:/path/to/projectDependencies.yaml
            Execute command using a "static" translator with translator
              parameters
  ui5 <command> --config /path/to/ui5.yaml
            Execute command using a project configuration from custom path
```

The CLI automatically checks for updates using [update-notifier](https://github.com/yeoman/update-notifier). While this is skipped in CI environments, you might also opt-out manually by following the steps described [here](https://github.com/yeoman/update-notifier/blob/master/readme.md#user-settings).

### Commands
#### add

`ui5 add [--development] [--optional] <framework-libraries..>` adds SAPUI5/OpenUI5 framework libraries to the project configuration

```
Positionals:
  framework-libraries  Framework library names  [array] [required] [default: []]

Options:
  --help, -h                Show help  [boolean]
  --version, -v             Show version number  [boolean]
  --config                  Path to configuration file  [string]
  --translator, --t8r       Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
  --verbose                 Enable verbose logging  [boolean]
  --loglevel, --log-level   Set the logging level (error|warn|info|verbose|silly)  [string] [default: "info"]
  --development, -D, --dev  Add as development dependency  [boolean] [default: false]
  --optional, -O            Add as optional dependency  [boolean] [default: false]

Examples:
  ui5 add sap.ui.core sap.m                Add the framework libraries sap.ui.core and sap.m as dependencies
  ui5 add -D sap.ui.support                Add the framework library sap.ui.support as development dependency
  ui5 add --optional themelib_sap_fiori_3  Add the framework library themelib_sap_fiori_3 as optional dependency
```

#### build
`ui5 build [options]` builds the project in the current directory.

```
Commands:
    dev             Dev build: Skips non-essential and time-intensive tasks during build
    jsdoc           Build JSDoc resources
    preload         (default) Build project and create preload bundles
    self-contained  Build project and create self-contained bundle

Options:
    --help, -h                 Show help  [boolean]
    --version, -v              Show version number  [boolean]
    --config                   Path to config file  [string]
    --translator, --t8r        Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
    --verbose                  Enable verbose logging. [boolean]
    --loglevel, --log-level    Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]
    --all, -a                  Include all project dependencies into build process [boolean] [default: false]
    --dest                     Path of build destination  [string] [default: "./dist"]
    --clean-dest               If present, clean the destination directory before building  [boolean] [default: false]
    --dev-exclude-project      A list of specific projects to be excluded from dev mode (dev mode must be active for this to be effective)  [array]
    --include-task             A list of specific tasks to be included to the default/dev set  [array]
    --exclude-task             A list of specific tasks to be excluded from default/dev set  [array]
    --framework-version        Overrides the framework version defined by the project  [string]

Examples:
    ui5 build --all                                                                      Preload build for project and dependencies to "./dist"
    ui5 build --all --exclude-task=* --include-task=createDebugFiles generateAppPreload  Build project and dependencies but only apply the createDebugFiles- and generateAppPreload tasks
    ui5 build --all --include-task=createDebugFiles --exclude-task=generateAppPreload    Build project and dependencies by applying all default tasks including the createDebugFiles task and excluding the generateAppPreload task
    ui5 build dev --all --dev-exclude-project=sap.ui.core sap.m                          Build project and dependencies in dev mode, except "sap.ui.core" and "sap.m" (useful in combination with --include-task)
    ui5 build dev                                                                        Build project and dependencies in dev mode. Only a set of essential tasks is executed.
```

#### init
`ui5 init [options]` initializes the UI5 Tooling configuration for an application or library project.

```
Options:
    --help, -h                Show help  [boolean]
    --version, -v             Show version number  [boolean]
    --config                  Path to config file  [string]
    --translator, --t8r       Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
    --verbose                 Enable verbose logging. [boolean]
    --loglevel, --log-level   Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]
```

#### remove

`ui5 remove <framework-libraries..>` removes SAPUI5/OpenUI5 framework libraries from the project configuration

```
Positionals:
  framework-libraries  Framework library names                                     [array] [required] [default: []]

Options:
  --help, -h               Show help                                                                      [boolean]
  --version, -v            Show version number                                                            [boolean]
  --config                 Path to configuration file                                                      [string]
  --translator, --t8r      Translator to use. Including optional colon separated translator parameters.
                                                                                [string] [default: "npm"]
  --verbose                Enable verbose logging.                                                        [boolean]
  --loglevel, --log-level  Set the logging level (error|warn|info|verbose|silly).        [string] [default: "info"]

Examples:
  ui5 remove sap.ui.core sap.m  Remove the framework libraries sap.ui.core and sap.m as dependencies
```

#### serve
`ui5 serve [options]` starts a web server for the current project.

```
Options:
    --help, -h                    Show help  [boolean]
    --version, -v                 Show version number  [boolean]
    --config                      Path to config file  [string]
    --translator, --t8r           Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
    --verbose                     Enable verbose logging. [boolean]
    --loglevel, --log-level       Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]
    --port, -p                    Port to bind on (default for HTTP: 8080, HTTP/2: 8443)  [number]
    --open, -o                    Open web server root directory in default browser. Optionally, supplied relative path will be appended to the root URL  [string]
    --h2                          Shortcut for enabling the HTTP/2 protocol for the web server  [boolean] [default: false]
    --simple-index                Use a simplified view for the server directory  [boolean] [default: false]
    --accept-remote-connections   Accept remote connections. By default the server only accepts connections from localhost  [boolean] [default: false]
    --key                         Path to the private key  [string] [default: "$HOME/.ui5/server/server.key"]
    --cert                        Path to the certificate  [string] [default: "$HOME/.ui5/server/server.crt"]
    --sap-csp-policies            Always send content security policies 'sap-target-level-1' and 'sap-target-level-2' in report-only mode  [boolean] [default: false]
    --framework-version           Overrides the framework version defined by the project  [string]

Examples:
    ui5 serve                                                        Start a web server for the current project
    ui5 serve --h2                                                   Enable the HTTP/2 protocol for the web server (requires SSL certificate)
    ui5 serve --config /path/to/ui5.yaml                             Use the project configuration from a custom path
    ui5 serve --translator static:/path/to/projectDependencies.yaml  Use a "static" translator with translator parameters.
    ui5 serve --port 1337 --open tests/QUnit.html                    Listen to port 1337 and launch default browser with http://localhost:1337/test/QUnit.html
```

#### tree

`ui5 tree [options]` outputs the dependency tree of the current project to _stdout_. It takes all relevant parameters of `ui5 build` into account.

```
Options:
  --help, -h               Show help [boolean]
  --version, -v            Show version number [boolean]
  --config                 Path to configuration file [string]
  --translator, --t8r      Translator to use. Including optional colon separated translator parameters. [string] [default: "npm"]
  --verbose                Enable verbose logging. [boolean]
  --loglevel, --log-level  Set the logging level (error|warn|info|verbose|silly). [string] [default: "info"]
  --full                   Include more information (currently the project configuration) [boolean] [default: false]
  --json                   Output tree as formatted JSON string [boolean] [default: false]
  --dedupe                 Remove duplicate projects from project tree [boolean] [default: false]

Examples:
    ui5 tree                              Returns plain dependency tree as returned by the used translator
    ui5 tree --full                       Returns the dependency tree after UI5 specific configuration has been applied
    ui5 tree > tree.txt                   Pipes the dependency tree into a new file "tree.txt"
    ui5 tree --json --dedupe > tree.json  Pipes the dependency tree, excluding duplicates into a new file "tree.json"
```

#### use

`ui5 use <framework-info>` initializes or updates the project's [framework configuration](./Configuration.md#framework-configuration).

```
Positionals:
  framework-info  Framework name, version or both (name@version).
                  Name can be "SAPUI5" or "OpenUI5" (case-insensitive).
                  Version can be "latest", "1.xx" or "1.xx.x".  [string] [required]

Options:
  --help, -h               Show help   [boolean]
  --version, -v            Show version number   [boolean]
  --config                 Path to configuration file   [string]
  --translator, --t8r      Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
  --verbose                Enable verbose logging.  [boolean]
  --loglevel, --log-level  Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]

Examples:
  ui5 use sapui5@latest  Use SAPUI5 in the latest available version
  ui5 use<EMAIL_ADDRESS> Use OpenUI5 in the latest available 1.76 patch version
  ui5 use latest         Use the latest available version of the configured framework
  ui5 use openui5        Use OpenUI5 without a version (or use existing version)
```

#### versions
`ui5 versions [options]` shows the versions of all UI5 Tooling packages.

```
Options:
    --help, -h                Show help  [boolean]
    --version, -v             Show version number  [boolean]
    --config                  Path to config file  [string]
    --translator, --t8r       Translator to use. Including optional colon separated translator parameters.  [string] [default: "npm"]
    --verbose                 Enable verbose logging. [boolean]
    --loglevel, --log-level   Set the logging level (error|warn|info|verbose|silly).  [string] [default: "info"]

```

### Local vs. Global Installation
In general, we recommend a global installation of the UI5 CLI (`npm install --global @ui5/cli`).

However, it makes sense to add the UI5 CLI as a [devDependency](https://docs.npmjs.com/files/package.json#devdependencies) (`npm install --save-dev @ui5/cli`) for a project that is using `ui5` commands in its build or test scripts or otherwise depends on the UI5 CLI for development workflows (like continuous integration).

In case you have both, a local installation in one of your projects as well as a global installation, the UI5 CLI will always try to invoke the local installation. This is in part because [npm scripts](https://docs.npmjs.com/misc/scripts) defined in your `package.json` will also always invoke the local installation.

This behavior can be disabled by setting the environment variable `UI5_CLI_NO_LOCAL`.

**Example**
You have a project located at `/my-application`. The project has a devDependency to `@ui5/cli` and defines the start script `"ui5 serve"`.

| Current Working Directory | Command                         | Uses globally installed UI5 CLI | Uses locally installed UI5 CLI |
| ------------------------- | ------------------------------- | :-----------------------------: | :----------------------------: |
| `/`                       |  `ui5 --version`                |               ✔                |
| `/my-application`         |  `ui5 --version`                |                                 |               ✔               |
| `/my-application`         |  `ui5 serve`                    |                                 |               ✔               |
| `/my-application`         |  `npm start`                    |                                 |               ✔               |
| `/my-application`         |  `UI5_CLI_NO_LOCAL=X ui5 serve` |               ✔                |
| `/my-application`         |  `UI5_CLI_NO_LOCAL=X npm start` |                                 |               ✔               |


text:
# optimalBulletdodger
A bullet dodging algorithm that utilizes a modified version of dijkstras shortest path algorithm/Modified A*

## Get started

Download .NET Core [2.1](https://get.dot.net) or newer.
Once installed, run this command:

```
dotnet tool install --global dotnet-serve
```

Start a simple server and open the browser by running

```
dotnet serve -o
```

license: MIT

branch_name: refs/heads/master

extension: md

gha_license_id: MIT

license_type: permissive


text:
# grunt-closure-linter

> Google closure linting

## Getting Started
This plugin requires Grunt `~0.4.0rc7`

If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

```shell
npm install grunt-closure-linter --save-dev
```

One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

```js
grunt.loadNpmTasks('grunt-closure-linter');
```

## The "closure_linter" task

### Overview
In your project's Gruntfile, add a section named `closureLint` and/or `closureFixStyle` to the data object passed into `grunt.initConfig()`.

Use the command attribute to point to a specific command if yours has not the default name.

```js
grunt.initConfig({
  closureLint: {
    app:{
      closureLinterPath : '/path/to/closure_linter/folder',
      command: 'gjslint',
      src: [ 'app/scripts/controllers/**',
             'app/scripts/services/**',
             'app/scripts/app.js' ],
      options: {
        stdout: true,
        strict: true
      }
    }
  },
  closureFixStyle: {
    app:{
      closureLinterPath : '/path/to/closure_linter/folder',
      command: 'fixjsstyle',
      src: [ 'app/scripts/controllers/**',
             'app/scripts/services/**',
             'app/scripts/app.js' ],
      options: {
        stdout: true,
        strict: true
      }
    }
  }
})
```

### Options

#### options.stdout
Type: `mixed`
Default value: `false`

- `true` – write results to stdout;
- `string` – write results to file specified;
- `false` – do not write anything.

#### options.stderr
Type: `Boolean`
Default value: `false`

Pipe errors to stderr.

#### options.failOnError
Type: `Boolean`
Default value: `true`

Fail task on errors.

#### options.strict
Type: `Boolean`
Default value: `false`

Use strict mode.

#### options.reporter
Type: `string`
Default value: `'closure'`

Reporter type. Possible values are: `'closure'`, `'jslint'`.

## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).

## Release History
_0.0.1_ Initial revision

repository: wonjoonSeol/ScienceScape

gha_language: JavaScript

repo_name: wonjoonSeol/ScienceScape


text:
# @leafygreen-ui/hooks

## 8.0.0

### Major Changes

- fd907503: Updates `useControlledValue` hook to remove the controlled value from internal state. Instead the controlled value is consumed directly.

## 7.7.8

### Patch Changes

- c11bbc29: Fixes problem with ts-docs not being available in bundle.

## 7.7.7

### Patch Changes

- c15ee2ac: Fixes missing documentation file

## 7.7.6

### Patch Changes

- 215268ff: Updates build tooling. No functional changes

## 7.7.5

### Patch Changes

- 735342e9: Adds `useForceRerender` hook.

## 7.7.4

### Patch Changes

- d2ce54e2f: Updates story files for Storybook 7.x

## 7.7.3

### Patch Changes

- a3a52e131: Removes call to use React 18's useId hook if found

## 7.7.2

### Patch Changes

- 32b3d3146: Rewrites `useIdAllocator` hook so that it performs properly across client-side and server-side renders

## 7.7.1

### Patch Changes

- 8c0c2bdf9: Updates build script to include a transpiled copy of the story file in the bundle

## 7.7.0

### Minor Changes

- d351c02bc: Creates `useStateRef` - a combination of useState and useRef, that returns the current state, a `setState` function, and a `getState` function that will return the current walue of the state. This is useful to avoid referencing stale state inside callbacks

### Patch Changes

- c2c5601f4: Adds missing dependencies. Removes unused dependencies

## 7.6.0

### Minor Changes

- ec2a3d66d: Creates `useAutoScroll` to automatically scroll a container

## 7.5.0

### Minor Changes

- ffb99f417: Creates `useControlledValue` hook

## 7.4.0

### Minor Changes

- 405636249: Adds `useBackdropClick` hook. Fires a callback when any element _except_ the provided foreground element(s) are clicked

## 7.3.3

### Patch Changes

- 24683433: - Remove an implicit dependency on `@emotion/react` fixing an issue where LG packages would not build if `<EMAIL_ADDRESS>or greater was installed.

## 7.3.2

### Patch Changes

- 3690df49: Updates `tsdoc.json` file

## 7.3.1

### Patch Changes

- 8d7534e9: Adds `tsdoc.json` to published package files

## 7.3.0

### Minor Changes

- 6792bc44: Adds `useAvailableSpace` to calculate the available vertical space between an element and the viewport

## 7.2.0

### Minor Changes

- 63ddf39: - Adds useForwardedRef hook
  - Adds useDynamicRefs hook

## 7.1.1

### Patch Changes

- 70f3c2c: Removes error message in useValidation when no prop is passed in

## 7.1.0

### Minor Changes

- d661688: Adds a useValidation hook, used in TextArea and TextInput

## 7.0.0

### Major Changes

- 047c1930: Adds `useIdAllocator` hook

## 6.0.1

### Patch Changes

- 1ed17f68: Updates lodash to 4.17.21, as there's a vulnerability in 4.17.20 that's been resolved in 4.17.21

## 6.0.0

### Major Changes

- c18f16e6: The `useElementNode` hook has been removed. It's recommended to use `useState` directly instead.

  # Example

  ## Before

  ```tsx
  const [node, setNode] = useElementNode<HTMLDivElement>();
  ```

  ## After

  ```tsx
  const [node, setNode] = useState<HTMLDivElement | null>(null);
  ```

## 5.0.1

### Patch Changes

- dac3f38b: Fixes a publishing error that prevented UMD modules from being distributed

## 5.0.0

### Major Changes

- 0267bfd2: The underlying structure of distributed module definition files have changed and now have official support for ES modules. Module definition files are now generated using Rollup instead of Webpack. This should not affect functionality, but some thorough testing and caution should be exercised when upgrading.

## 4.2.1

### Patch Changes

- d5d40791: Pin lodash version to latest to include fix for [prototype pollution attack vulnerability.](https://hackerone.com/reports/712065)

## 4.2.0

### Minor Changes

- 8c867bb: Adds new useIsomorphicLayoutEffect hook

### Patch Changes

- e599707: Changes import pattern for Lodash method.

## 4.1.0

### Minor Changes

- 2c09c48: Added usePrevious hook
- add8745: Add `useObjectDependency` hook

## 4.0.1

### Patch Changes

- 691eb05: Better support for UMD

## 4.0.0

### Major Changes

- fa55b3d: Make some hooks and MongoNav support server-side rendering

## 3.0.0

### Major Changes

- d739511: The `once` option to `useEventListener` has been merged together with the `enabled` option.

## 2.1.0

### Minor Changes

- 1b298cc: Create usePoller hook.

## 2.0.1

### Patch Changes

- ac5c473: Adds lodash as dependency

## 2.0.0

### Major Changes

- 464c09d: Introduces SSR compatibility though a change to our build process and files

## 1.1.0

### Minor Changes

- 3a24668: Adds useEscapeKey hook

## 1.0.7

### Patch Changes

- 7825641: Patches a bug in useEventListeners hook, to now ensure that `eventListener` is set or unset when enabled changes values

repository: mongodb/leafygreen-ui

branch_name: refs/heads/main

gha_language: TypeScript

repo_name: mongodb/leafygreen-ui


text:
# southern

 * [Herb And Spice Southern Fried Chicken](../../index/h/herb-and-spice-southern-fried-chicken-358324.json)
 * [Posole With Southern Greens Chayote Dried Cherries And Pecans](../../index/p/posole-with-southern-greens-chayote-dried-cherries-and-pecans-104137.json)
 * [Southern Barbecue Shrimp](../../index/s/southern-barbecue-shrimp-235340.json)
 * [Southern California Crepes](../../index/s/southern-california-crepes-11760.json)
 * [Southern Comfort Champagne](../../index/s/southern-comfort-champagne-102762.json)
 * [Southern Corn Bread Stuffing With Smoked Ham And Yams](../../index/s/southern-corn-bread-stuffing-with-smoked-ham-and-yams-105806.json)
 * [Southern Cross](../../index/s/southern-cross-200316.json)
 * [Southern Fried Catfish](../../index/s/southern-fried-catfish-108345.json)
 * [Southern Fried Chicken](../../index/s/southern-fried-chicken-106321.json)
 * [Southern Fried Chicken With Country Gravy](../../index/s/southern-fried-chicken-with-country-gravy-352491.json)
 * [Southern Gin](../../index/s/southern-gin-201041.json)
 * [Southern Rice Pilaf Stuffing With Ham Pecans And Greens](../../index/s/southern-rice-pilaf-stuffing-with-ham-pecans-and-greens-811.json)
 * [Southern Sausage Souffle](../../index/s/southern-sausage-souffle-1331.json)
 * [Southern Style Meatloaf](../../index/s/southern-style-meatloaf-235707.json)
 * [Southern Vegetable Gratin](../../index/s/southern-vegetable-gratin-1683.json)
 * [Spicy Southern Barbeque Sauce](../../index/s/spicy-southern-barbeque-sauce-12441.json)
 * [Classic Southern Macaroni And Cheese](../../index/c/classic-southern-macaroni-and-cheese.json)
 * [Grilled Southern Fish Tacos With Cabbage Slaw Recipe](../../index/g/grilled-southern-fish-tacos-with-cabbage-slaw-recipe.json)
 * [Sherlas Southern Greens](../../index/s/sherlas-southern-greens.json)
 * [Southern Biscuits Recipe](../../index/s/southern-biscuits-recipe.json)
 * [Southern Biscuits Recipe2](../../index/s/southern-biscuits-recipe2.json)
 * [Southern Buttermilk Bourbon Praline Doughnuts Recipe](../../index/s/southern-buttermilk-bourbon-praline-doughnuts-recipe.json)
 * [Southern Fried Catfish Recipe](../../index/s/southern-fried-catfish-recipe.json)
 * [Southern Fried Chicken Recipe](../../index/s/southern-fried-chicken-recipe.json)
 * [Southern Red Velvet Cake Recipe](../../index/s/southern-red-velvet-cake-recipe.json)
 * [515 Southern Style St Louis Ribs](../../index/5/515-southern-style-st-louis-ribs.json)
 * [A Southern Fried Chicken](../../index/a/a-southern-fried-chicken.json)
 * [Arts Southern Style Chocolate Gravy](../../index/a/arts-southern-style-chocolate-gravy.json)
 * [Aunt Burvins Southern Tea Cakes](../../index/a/aunt-burvins-southern-tea-cakes.json)
 * [Aunt Libbys Southern Meatloaf](../../index/a/aunt-libbys-southern-meatloaf.json)
 * [Authentic Southern Banana Pudding](../../index/a/authentic-southern-banana-pudding.json)
 * [Bannys Southern Cream Cookies](../../index/b/bannys-southern-cream-cookies.json)
 * [Burtons Southern Fried Chicken With](../../index/b/burtons-southern-fried-chicken-with.json)
 * [Carries Southern Queso](../../index/c/carries-southern-queso.json)
 * [Cindyds Somewhat Southern Fried Chic](../../index/c/cindyds-somewhat-southern-fried-chic.json)
 * [Cindys Southern Vegetable Delight](../../index/c/cindys-southern-vegetable-delight.json)
 * [Connies Southern Style Chicken And D](../../index/c/connies-southern-style-chicken-and-d.json)
 * [Corn Fritters Southern Style](../../index/c/corn-fritters-southern-style.json)
 * [Cornbread Stuffing Southern Style](../../index/c/cornbread-stuffing-southern-style.json)
 * [Crazy Good Southern Baked Ham](../../index/c/crazy-good-southern-baked-ham.json)
 * [Creamy Southern Shrimp And Cheese Gri](../../index/c/creamy-southern-shrimp-and-cheese-gri.json)
 * [Delicious Southern Cornbread](../../index/d/delicious-southern-cornbread.json)
 * [Djangos Southern Borscht](../../index/d/djangos-southern-borscht.json)
 * [Easy Southern Fried Green Tomatoes](../../index/e/easy-southern-fried-green-tomatoes.json)
 * [Easy Southern Sweet Potato Casserole](../../index/e/easy-southern-sweet-potato-casserole.json)
 * [Elegant Southern Jam Cake](../../index/e/elegant-southern-jam-cake.json)
 * [Elizabeths Pesto With A Southern Twi](../../index/e/elizabeths-pesto-with-a-southern-twi.json)
 * [Flavorful Southern Fried Chicken](../../index/f/flavorful-southern-fried-chicken.json)
 * [Fresh Southern Peach Cobbler](../../index/f/fresh-southern-peach-cobbler.json)
 * [Good Ole Southern Frogmore Stew](../../index/g/good-ole-southern-frogmore-stew.json)
 * [Grandma Carols Southern Sweet Potato](../../index/g/grandma-carols-southern-sweet-potato.json)
 * [Grandmas Onion Rings Southern Style](../../index/g/grandmas-onion-rings-southern-style.json)
 * [Grandmas Red Hot Southern Sweet Pota](../../index/g/grandmas-red-hot-southern-sweet-pota.json)
 * [Grandmas Southern Mac And Cheese](../../index/g/grandmas-southern-mac-and-cheese.json)
 * [Gregs Southern Biscuits](../../index/g/gregs-southern-biscuits.json)
 * [Healthier Southern Peach Cobbler](../../index/h/healthier-southern-peach-cobbler.json)
 * [Healthy And Delicious Southern Turnip](../../index/h/healthy-and-delicious-southern-turnip.json)
 * [Kathys Southern Corn Pudding](../../index/k/kathys-southern-corn-pudding.json)
 * [Kaylas Southern Pecan Mist Cake](../../index/k/kaylas-southern-pecan-mist-cake.json)
 * [Macaroni And Cheese Southern Style](../../index/m/macaroni-and-cheese-southern-style.json)
 * [Mamaws Southern Buttermilk Chicken](../../index/m/mamaws-southern-buttermilk-chicken.json)
 * [Margarets Southern Chocolate Pie](../../index/m/margarets-southern-chocolate-pie.json)
 * [Meat Pie Southern Version](../../index/m/meat-pie-southern-version.json)
 * [Mini Southern Pecan Pies](../../index/m/mini-southern-pecan-pies.json)
 * [Nanas Southern Coleslaw](../../index/n/nanas-southern-coleslaw.json)
 * [Nanas Southern Pickled Peaches](../../index/n/nanas-southern-pickled-peaches.json)
 * [Old Southern Chocolate Pecan Sheet Ca](../../index/o/old-southern-chocolate-pecan-sheet-ca.json)
 * [Pauls Southern California Bbq Sauce](../../index/p/pauls-southern-california-bbq-sauce.json)
 * [Quiche Southern Egg Pie](../../index/q/quiche-southern-egg-pie.json)
 * [Real Southern Cornbread](../../index/r/real-southern-cornbread.json)
 * [Real Southern Peanut Butter Pie](../../index/r/real-southern-peanut-butter-pie.json)
 * [Shawnas Southern Fried Chicken Salad](../../index/s/shawnas-southern-fried-chicken-salad.json)
 * [Slow Cooker Southern Lima Beans And H](../../index/s/slow-cooker-southern-lima-beans-and-h.json)
 * [Smokey Southern Mustard Greens](../../index/s/smokey-southern-mustard-greens.json)
 * [Southern Addiction Mint Julep](../../index/s/southern-addiction-mint-julep.json)
 * [Southern Apple Tuna Salad](../../index/s/southern-apple-tuna-salad.json)
 * [Southern Apricot Chicken](../../index/s/southern-apricot-chicken.json)
 * [Southern As You Can Get Collard Green](../../index/s/southern-as-you-can-get-collard-green.json)
 * [Southern Baked Yellow Squash](../../index/s/southern-baked-yellow-squash.json)
 * [Southern Barbeque Pulled Beef Sandwic](../../index/s/southern-barbeque-pulled-beef-sandwic.json)
 * [Southern Bbq Chicken](../../index/s/southern-bbq-chicken.json)
 * [Southern Bbq Sauce](../../index/s/southern-bbq-sauce.json)
 * [Southern Biscuits With Mayonnaise](../../index/s/southern-biscuits-with-mayonnaise.json)
 * [Southern Boiled Custard](../../index/s/southern-boiled-custard.json)
 * [Southern Burgers](../../index/s/southern-burgers.json)
 * [Southern Butter Beans](../../index/s/southern-butter-beans.json)
 * [Southern Butter Rolls](../../index/s/southern-butter-rolls.json)
 * [Southern Butternut Squash](../../index/s/southern-butternut-squash.json)
 * [Southern Cabbage For The Pressure Coo](../../index/s/southern-cabbage-for-the-pressure-coo.json)
 * [Southern Cajun Boiled Peanuts](../../index/s/southern-cajun-boiled-peanuts.json)
 * [Southern California Cioppino](../../index/s/southern-california-cioppino.json)
 * [Southern Candied Sweet Potatoes](../../index/s/southern-candied-sweet-potatoes.json)
 * [Southern Cheese Dip](../../index/s/southern-cheese-dip.json)
 * [Southern Chess Squares](../../index/s/southern-chess-squares.json)
 * [Southern Chicken And Dumplings](../../index/s/southern-chicken-and-dumplings.json)
 * [Southern Chicken Fried Steak](../../index/s/southern-chicken-fried-steak.json)
 * [Southern Chicken Salad](../../index/s/southern-chicken-salad.json)
 * [Southern Coffee Punch](../../index/s/southern-coffee-punch.json)
 * [Southern Coleslaw](../../index/s/southern-coleslaw.json)
 * [Southern Collard Greens](../../index/s/southern-collard-greens.json)
 * [Southern Comfort Cake](../../index/s/southern-comfort-cake.json)
 * [Southern Comfort Ice Cream Pie](../../index/s/southern-comfort-ice-cream-pie.json)
 * [Southern Comfort Manhattan](../../index/s/southern-comfort-manhattan.json)
 * [Southern Comfort Sweet Potatoes](../../index/s/southern-comfort-sweet-potatoes.json)
 * [Southern Corn Pone Bread](../../index/s/southern-corn-pone-bread.json)
 * [Southern Cornbread Dressing](../../index/s/southern-cornbread-dressing.json)
 * [Southern Cornbread Oyster Dressing](../../index/s/southern-cornbread-oyster-dressing.json)
 * [Southern Creams](../../index/s/southern-creams.json)
 * [Southern Deviled Eggs](../../index/s/southern-deviled-eggs.json)
 * [Southern Dill Potato Salad](../../index/s/southern-dill-potato-salad.json)
 * [Southern Dirty Rice](../../index/s/southern-dirty-rice.json)
 * [Southern French Dressing](../../index/s/southern-french-dressing.json)
 * [Southern Fried Apples](../../index/s/southern-fried-apples.json)
 * [Southern Fried Cabbage With Bacon Mu](../../index/s/southern-fried-cabbage-with-bacon-mu.json)
 * [Southern Fried Cabbage](../../index/s/southern-fried-cabbage.json)
 * [Southern Fried Catfish](../../index/s/southern-fried-catfish.json)
 * [Southern Fried Chicken Gizzards](../../index/s/southern-fried-chicken-gizzards.json)
 * [Southern Fried Chicken Livers](../../index/s/southern-fried-chicken-livers.json)
 * [Southern Fried Chicken Strips](../../index/s/southern-fried-chicken-strips.json)
 * [Southern Fried Chicken](../../index/s/southern-fried-chicken.json)
 * [Southern Fried Corn](../../index/s/southern-fried-corn.json)
 * [Southern Fried Green Beans](../../index/s/southern-fried-green-beans.json)
 * [Southern Fried Green Tomatoes](../../index/s/southern-fried-green-tomatoes.json)
 * [Southern Green Beans](../../index/s/southern-green-beans.json)
 * [Southern Grilled Barbecued Ribs](../../index/s/southern-grilled-barbecued-ribs.json)
 * [Southern Grits Casserole](../../index/s/southern-grits-casserole.json)
 * [Southern Ham And Brown Beans](../../index/s/southern-ham-and-brown-beans.json)
 * [Southern Hollandaise Sauce](../../index/s/southern-hollandaise-sauce.json)
 * [Southern Ireland](../../index/s/southern-ireland.json)
 * [Southern Italian Thanksgiving Stuffin](../../index/s/southern-italian-thanksgiving-stuffin.json)
 * [Southern Jambalaya](../../index/s/southern-jambalaya.json)
 * [Southern Layered Banana Pudding](../../index/s/southern-layered-banana-pudding.json)
 * [Southern Macaroni And Cheese Pie](../../index/s/southern-macaroni-and-cheese-pie.json)
 * [Southern Macaroni And Cheese](../../index/s/southern-macaroni-and-cheese.json)
 * [Southern Made Cheese Ball](../../index/s/southern-made-cheese-ball.json)
 * [Southern Moon Pies](../../index/s/southern-moon-pies.json)
 * [Southern Mushroom Soup](../../index/s/southern-mushroom-soup.json)
 * [Southern Peach Cobbler](../../index/s/southern-peach-cobbler.json)
 * [Southern Peanut Butter Pie](../../index/s/southern-peanut-butter-pie.json)
 * [Southern Pecan Bars](../../index/s/southern-pecan-bars.json)
 * [Southern Pecan Pie I](../../index/s/southern-pecan-pie-i.json)
 * [Southern Pecan Pie Ii](../../index/s/southern-pecan-pie-ii.json)
 * [Southern Pecan Pralines](../../index/s/southern-pecan-pralines.json)
 * [Southern Pimento Cheese](../../index/s/southern-pimento-cheese.json)
 * [Southern Pineapple Casserole](../../index/s/southern-pineapple-casserole.json)
 * [Southern Pork Tenderloin](../../index/s/southern-pork-tenderloin.json)
 * [Southern Possum Pie](../../index/s/southern-possum-pie.json)
 * [Southern Potato Salad](../../index/s/southern-potato-salad.json)
 * [Southern Praline Pecan Cake](../../index/s/southern-praline-pecan-cake.json)
 * [Southern Pulled Pork](../../index/s/southern-pulled-pork.json)
 * [Southern Red Velvet Cake](../../index/s/southern-red-velvet-cake.json)
 * [Southern Sauce](../../index/s/southern-sauce.json)
 * [Southern Skillet Dinner](../../index/s/southern-skillet-dinner.json)
 * [Southern Spain Style Gazpacho](../../index/s/southern-spain-style-gazpacho.json)
 * [Southern Spiced Chocolate Chip Cookie](../../index/s/southern-spiced-chocolate-chip-cookie.json)
 * [Southern Spicy Fried Chicken](../../index/s/southern-spicy-fried-chicken.json)
 * [Southern Squash Casserole](../../index/s/southern-squash-casserole.json)
 * [Southern Stuffed Quail](../../index/s/southern-stuffed-quail.json)
 * [Southern Style Banana Split Cake](../../index/s/southern-style-banana-split-cake.json)
 * [Southern Style Beef Stew](../../index/s/southern-style-beef-stew.json)
 * [Southern Style Buttermilk Fried Chick](../../index/s/southern-style-buttermilk-fried-chick.json)
 * [Southern Style Chicken And Dumplings](../../index/s/southern-style-chicken-and-dumplings.json)
 * [Southern Style Chicken Perlo With And](../../index/s/southern-style-chicken-perlo-with-and.json)
 * [Southern Style Chocolate Gravy](../../index/s/southern-style-chocolate-gravy.json)
 * [Southern Style Chocolate Pound Cake](../../index/s/southern-style-chocolate-pound-cake.json)
 * [Southern Style Collard Greens](../../index/s/southern-style-collard-greens.json)
 * [Southern Style Crowder Peas](../../index/s/southern-style-crowder-peas.json)
 * [Southern Style Deviled Eggs](../../index/s/southern-style-deviled-eggs.json)
 * [Southern Style Dry Rub For Pork Or Ch](../../index/s/southern-style-dry-rub-for-pork-or-ch.json)
 * [Southern Style French Onion Soup](../../index/s/southern-style-french-onion-soup.json)
 * [Southern Style Fried Mushrooms](../../index/s/southern-style-fried-mushrooms.json)
 * [Southern Style Fried Okra](../../index/s/southern-style-fried-okra.json)
 * [Southern Style Holiday Greens](../../index/s/southern-style-holiday-greens.json)
 * [Southern Style Honey Butter](../../index/s/southern-style-honey-butter.json)
 * [Southern Style Hot Water Cornbread](../../index/s/southern-style-hot-water-cornbread.json)
 * [Southern Style Meat Sauce](../../index/s/southern-style-meat-sauce.json)
 * [Southern Style Neck Bones](../../index/s/southern-style-neck-bones.json)
 * [Southern Style Onion Rings](../../index/s/southern-style-onion-rings.json)
 * [Southern Style Oven Fried Catfish](../../index/s/southern-style-oven-fried-catfish.json)
 * [Southern Style Pig Tails](../../index/s/southern-style-pig-tails.json)
 * [Southern Style Pork Chops](../../index/s/southern-style-pork-chops.json)
 * [Southern Style Thanksgiving Green Bea](../../index/s/southern-style-thanksgiving-green-bea.json)
 * [Southern Style Tomato Gravy](../../index/s/southern-style-tomato-gravy.json)
 * [Southern Summer Squash Pudding](../../index/s/southern-summer-squash-pudding.json)
 * [Southern Sunrise](../../index/s/southern-sunrise.json)
 * [Southern Sweet Grilled Pork Chops](../../index/s/southern-sweet-grilled-pork-chops.json)
 * [Southern Sweet Ham Glaze](../../index/s/southern-sweet-ham-glaze.json)
 * [Southern Sweet Potato Bread With Peca](../../index/s/southern-sweet-potato-bread-with-peca.json)
 * [Southern Texas Style Beef Barbacoa](../../index/s/southern-texas-style-beef-barbacoa.json)
 * [Southern Turnip Greens With Sausage](../../index/s/southern-turnip-greens-with-sausage.json)
 * [Southern Turnip Supreme](../../index/s/southern-turnip-supreme.json)
 * [Southern Yank Pulled Pork Bbq](../../index/s/southern-yank-pulled-pork-bbq.json)
 * [Spicy Southern Chicken And Tuna Biscu](../../index/s/spicy-southern-chicken-and-tuna-biscu.json)
 * [Spicy Southern Fried Okra](../../index/s/spicy-southern-fried-okra.json)
 * [Sweet Southern Bbq Back Ribs](../../index/s/sweet-southern-bbq-back-ribs.json)
 * [Sweetest Southern Sweet Potato Pie](../../index/s/sweetest-southern-sweet-potato-pie.json)
 * [Tanyas Louisiana Southern Fried Chic](../../index/t/tanyas-louisiana-southern-fried-chic.json)
 * [Teenas Overnight Southern Buttermilk](../../index/t/teenas-overnight-southern-buttermilk.json)
 * [Zesty Southern Pasta And Bean Salad](../../index/z/zesty-southern-pasta-and-bean-salad.json)
 * [Herb And Spice Southern Fried Chicken 358324](../../index/h/herb-and-spice-southern-fried-chicken-358324.json)
 * [Posole With Southern Greens Chayote Dried Cherries And Pecans 104137](../../index/p/posole-with-southern-greens-chayote-dried-cherries-and-pecans-104137.json)
 * [Southern Barbecue Shrimp 235340](../../index/s/southern-barbecue-shrimp-235340.json)
 * [Southern California Crepes 11760](../../index/s/southern-california-crepes-11760.json)
 * [Southern Corn Bread Stuffing With Smoked Ham And Yams 105806](../../index/s/southern-corn-bread-stuffing-with-smoked-ham-and-yams-105806.json)
 * [Southern Cross 200316](../../index/s/southern-cross-200316.json)
 * [Southern Fried Catfish 108345](../../index/s/southern-fried-catfish-108345.json)
 * [Southern Fried Chicken 106321](../../index/s/southern-fried-chicken-106321.json)
 * [Southern Fried Chicken With Country Gravy 352491](../../index/s/southern-fried-chicken-with-country-gravy-352491.json)
 * [Southern Gin 201041](../../index/s/southern-gin-201041.json)
 * [Southern Rice Pilaf Stuffing With Ham Pecans And Greens 811](../../index/s/southern-rice-pilaf-stuffing-with-ham-pecans-and-greens-811.json)
 * [Southern Sausage Souffle 1331](../../index/s/southern-sausage-souffle-1331.json)
 * [Southern Style Meatloaf 235707](../../index/s/southern-style-meatloaf-235707.json)
 * [Southern Vegetable Gratin 1683](../../index/s/southern-vegetable-gratin-1683.json)
 * [Spicy Southern Barbeque Sauce 12441](../../index/s/spicy-southern-barbeque-sauce-12441.json)


text:
[![Release](https://jitpack.io/v/ParkSangGwon/TedPermission.svg)](https://jitpack.io/ParkSangGwon/TedPermission)
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-TedPermission-green.svg?style=true)](https://android-arsenal.com/details/1/3238)

# What is TedPermission?

After Android Marshmallow, you have to not only decalare permisions in `AndroidManifest.xml` but also request permissions at runtime.

Furthermore anytime user can on/off permissions at application setting.

When you use dangerous permissons(ex. CAMERA, READ_CONTACTS, READ_PHONE_STATE), you have to check and request permissions runtime.

([See dangerous permissions](http://developer.android.com/intl/ko/guide/topics/security/permissions.html#normal-dangerous))

You can make check function yourself.

([How to Requesting Permissions at RunTime](http://developer.android.com/intl/ko/training/permissions/requesting.html))

But original check function is so complex and hard..

(`checkSelfPermission()`, `requestPermissions()`, `onRequestPermissionsResult()`, `onActivityResult()` ...)

TedPermission is simple permission check helper.

## Demo

![Screenshot](https://github.com/ParkSangGwon/TedPermission/blob/master/Screenshot.png?raw=true)

1. Request Permissions.
2. If user denied permissions, we will show message dialog with Setting button.

## Setup

### Gradle

```javascript

dependencies {
    compile 'gun0912.ted:tedpermission:1.0.3'
}

```

If you think this library is usuful, please press start button at upside.

## How to use

### 1. Make PermissionListener
We will use PermissionListener for Permission Result.
You will get result to `onPermissionGranted()`, `onPermissionDenied()`

```javascript

    PermissionListener permissionlistener = new PermissionListener() {
        @Override
        public void onPermissionGranted() {
            Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPermissionDenied(ArrayList<String> deniedPermissions) {
            Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
        }

    };

```

### 2. Start TedPermission
TedPermission class need `setPermissionListener()`, `setPermissions()`.
and `check()` will start check permissions

`setRationaleMessage()`,`setDeniedMessage()` is optional method.

```javascript

    new TedPermission(this)
    .setPermissionListener(permissionlistener)
    .setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
    .setPermissions(Manifest.permission.READ_CONTACTS, Manifest.permission.ACCESS_FINE_LOCATION)
    .check();

```

## Proguard
If you use proguard, you have to add this code.
```javascript
-keepattributes *Annotation*
-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}
````

##Customize
You can customize something ...

* `setGotoSettingButton(boolean) (default: true)`
* `setRationaleMessage(R.string.xxx or String)`
* `setRationaleConfirmText(R.string.xxx or String) (default: confirm / 확인)`
* `setDeniedMessage(R.string.xxx or String)`
* `setDeniedCloseButtonText(R.string.xxx or String) (default: close / 닫기)`
* `setGotoSettingButtonText(R.string.xxx or String) (default: setting / 설정)`

## Number of Cases
1. Check permissions -> have permissions

: `onPermissionGranted()` called

2. Check permissions -> don't have permissions

: show request dialog

![Screenshot](https://github.com/ParkSangGwon/TedPermission/blob/master/request_dialog.png?raw=true)

3. show request dialog -> granted permissions

: `onPermissionGranted()` called

4. show request dialog -> denied permissions

: show denied dialog

![Screenshot](https://github.com/ParkSangGwon/TedPermission/blob/master/denied_dialog.png?raw=true)

5. show denied dialog -> close

: `onPermissionDenied()` called

6. show denied dialog -> setting

: `startActivityForResult()` to `setting` activity

![Screenshot](https://github.com/ParkSangGwon/TedPermission/blob/master/setting_activity.png?raw=true)

7. setting activity -> `onActivityResult()`

: check permission

8. check permission -> granted permissions

: `onPermissionGranted()` called

9. check permission -> denied permissions

: `onPermissionDenied()` called

![Screenshot](https://github.com/ParkSangGwon/TedPermission/blob/master/Screenshot_cases.png?raw=true)

## Thanks
* [Otto](https://github.com/square/otto) - An enhanced Guava-based event bus with emphasis on Android support

## License
 ```code
Copyright 2016 Ted Park

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.```

repository: lipnus/android-example

repo_name: lipnus/android-example


text:
# GAUSS-01121 -- GAUSS-01130

GAUSS-01121: "cannot swap toast files by content when there's only one"

SQLSTATE: XX000

Description: During scale-out and redistribution, the physical files of two tables fail to be exchanged using the gs\_switch\_relfilenode function, because the toast table in one of the tables is empty.

Solution: Delete the current table, rebuild it using  **CREATE TABLE**, and rebuild its physical file.

GAUSS-01122: "cannot swap toast files by links for system catalogs"

SQLSTATE: XX000

Description: During scale-out and redistribution, when the physical files of two tables are exchanged using the gs\_switch\_relfilenode function, the toast physical files of system catalogs cannot be exchanged.

Solution: During scale-out and redistribution, the toast physical files of system catalogs cannot be exchanged using the gs\_switch\_relfilenode function. Check whether the function parameters contain any system catalog names.

GAUSS-01123: "expected one dependency record for TOAST table, found %ld"

SQLSTATE: XX000

Description: During scale-out and redistribution, the physical files of two tables fail to be exchanged using the gs\_switch\_relfilenode function, because more than one object depends on the toast table.

Solution: Check the number of objects the toast table depends on in the  **pg\_depend**  table. If more than one object exists, delete them and exchange the physical files using the gs\_switch\_relfilenode function.

GAUSS-01124: "expected none dependency record for partiton's TOAST table, found %ld"

SQLSTATE: XX000

Description: While the partition files of two tables are exchanged during partitioned table rebuilding, toast table files \(if any\) in the two tables are also exchanged. The partition files fail to be exchanged because the toast tables have dependent objects.

Solution: Rebuild the required partitioned table using  **CREATE TABLE PARTITION**.

GAUSS-01125: "expected one dependency record for CUDesc/Delta table, found %ld"

SQLSTATE: XX000

Description: During scale-out and redistribution, the physical files of two column-store tables fail to be exchanged using the gs\_switch\_relfilenode function, because more than one object depends on the column-store table.

Solution: Check the number of objects the column-store table depends on in the  **pg\_depend**  table. If more than one object exists, delete them and exchange the physical files using the gs\_switch\_relfilenode function.

GAUSS-01127: "invalid statement name: must not be empty"

SQLSTATE: 42P14

Description: The statement name is empty.

Solution: Specify the statement name.

GAUSS-01128: "could not determine data type of parameter $%d"

SQLSTATE: 42P18

Description: The parameter data type cannot be recognized.

Solution: Change the parameter value to a value recognizable to the system. For the value types recognizable to the system, see  [en-us\_topic\_0237121926.md](en-us_topic_0237121926.md).

GAUSS-01129: "utility statements cannot be prepared"

SQLSTATE: 42P14

Description: DDL statements cannot be prepared.

Solution: Do not prepare DDL statements.

GAUSS-01130: "EXECUTE does not support variable-result cached plans"

SQLSTATE: XX000

Description:Internal system error.

Solution:Contact technical support.


text:
# Story (Scratch Program)
A basic Scratch program that swaps out sentences to change the presented story (press spacebar to change the sentences). GitHub does not have proper Scratch support, so in order to use the program, either open up the .sb file in Scratch yourself, or open the provided Link textfile to use the browser version.

This may very well be the first programming project I've ever completed, and is most definitely the first Scratch program I've made.

This was an assignment from my 9th grade computer science glass. The exact details were not digitized, and have since been lost to time, but I'll do my best to recall the process.

The lead-in to this program was to design and use a background and a sprite, and learn how to manipulate these things (this is why the non-sentence parts of this program are the way they are.

Scratch is required to run this program. This requires either downloading the Scratch program or using the browser version.

repository: connedbrews/Story

repo_name: connedbrews/Story


text:
---
heading: Zendesk
seo: Tips | Zendesk | Cloud Elements API Docs
title: Tips
description: Zendesk Tips
layout: sidebarelementdoc
breadcrumbs: /docs/elements.html
elementId: 41
parent: Back to Element Guides
order: 75
---

# Tips

The Tips section includes more information about the element including FAQs, endpoint limitations, and general tips.

{% include callout.html content="On this page
General" type="info" %}

## General

* Side loading functionality is available for Zendesk `/incidents`, `/users`, `/groups`, `/agents` and `/incident/{id}/comments`. To utilize this functionality, send a where parameter of include = 'users,groups'.
* Zendesk CEQL does not support the "OR" operator

repository: cloud-elements/devportal

repo_name: cloud-elements/devportal


text:
# AFK
If command in the `~` console is .afk
This makes you __NOT__ respawn.
Run the command again to spawn again
# Config Options
| Name | Type | Description | Default |
| --- | --- | --- | --- |
| `Maxplayers`| int | How many players until the command doesn't work | 10 |
| `AddedToAfk`| string | The added to afk message | "You have been added to afk players.\nYou will not respawn." |
| `RemovedFromAFK` | string | The removed from afk message | "You have been removed from afk players.\nYou may now respawn." |

<<<<<<< HEAD
Discord: TypicalIllusion#6969
=======
Discord: TypicalIllusion#6969
>>>>>>> e94e1c226622eceb8ac0d7466c6e3653af5c472d

repository: TypicalIllusion/AFK-Synapse

repo_name: TypicalIllusion/AFK-Synapse


text:
# Datasets

This page is about loading/writing, examining and operating directly on entire NetCDF datasets. For functions regarding the variables stored in them, see the [Variables](@ref) page.

Both variables and datasets share the functionality of the [Attributes](@ref) section.

```@docs
NCDataset
```

Useful functions that operate on datasets are:

```@docs
keys(ds::NCDataset)
haskey
getindex(ds::NCDataset,varname::AbstractString)
variable
cfvariable
sync
close
NCDatasets.path
ncgen
varbyattrib
write
```

Notice that DateTime-structures from [CFTime](http://juliageo.org/CFTime.jl/stable/) are used to represent time for non-standard calendars.
Otherwise, we attempt to use standard structures from the Julia standard library `Dates`.

## Groups

```@docs
defGroup(ds::NCDataset,groupname)
getindex(g::NCDatasets.Groups,groupname::AbstractString)
Base.keys(g::NCDatasets.Groups)
    groupname(ds::NCDataset)
```

## Common methods

One can iterate over a dataset, attribute list, dimensions and NetCDF groups.

```julia
for (varname,var) in ds
    # all variables
    @show (varname,size(var))
end

for (attribname,attrib) in ds.attrib
    # all attributes
    @show (attribname,attrib)
end

for (groupname,group) in ds.groups
    # all groups
    @show (groupname,group)
end
```

gha_language: Julia

gha_license_id: NOASSERTION


text:
# drive2hugo
A bridge between Google Documents and Hugo

## Overview

The goal of this project was to allow Google Documents to act as content files for Hugo projects. [Hugo](http://gohugo.io/) is an excellent static site generator that allows me to quickly create robust websites that need virtually no CPU overhead to operate. In the news business, we create several new projects a month. Hugo allows me to develop them, get them out the door, and then forget about them so I can move on to the next task.

One of the major drawbacks of Hugo is that it requires files be saved directly on the server. Like many other businesses, we have vendors, management systems, and preferred employee workflows that don't mesh well with a remote repository of code. We heavily rely on Google Drive, however. By building a bridge between Hugo and Drive, I can create the necessary content files automatically using a cron, and our employees can comofortably work on a platform that they know well.

The `drive2hugo` command simply saves Google Documents, by folder, into corresponding folders inside the Hugo project. I chose Go to both learn the language and provide a way to run this program on both Mac and Linux. This is my first Go program, and I used quite a bit of code from the [Google documentation](https://developers.google.com/drive/v3/web/quickstart/go).

## Configuration/Flags

### -config string (default "d2h.config.json")

To authenticate, you must create a Google App and download a JSON credential file. The [Google documentation](https://developers.google.com/drive/v3/web/quickstart/go) tells you how to do this. Rename that file to *d2h.config.json* and place it in your current working directory, or use the config flag to pass a filepath to your favorite place.

When you first run the program, it will provide a url to paste into your browser. After authenticating, the token response will be saved to $HOME/.drive2hugo/auth-token.json. **It's important to know what user authenticated if you want to put this on a cron later**. This is a one-time process and all but one simplification function came directly from Google.

To mirror folders in Drive, you must append them to the configuration file. See an example below.

```json
{
  "installed": "... Google Data downloaded from the developer console",
  "folders": [
    {
      "id": "ID of the folder in Drive",
      "path": "path of the folder on the local system (e.g. ./content/articles)"
    }
  ]
}
```

### -modified bool

The modified tag will create the file *d2h.modified.txt* in the current working directory containing the RFC 3339 timestamp of the last run. Each additional pull will only look for files in the configured folders that have been modified since that time, and again update the *d2h.modified.txt* file.

## Final thoughts

I tried to keep this process separate from Hugo itself, partly because you have to but also because it just feels right. I like being able to mix and match what sections are linked to Drive and what sections are static. Sure, it means two commands to build the site each time, but a tiny Makefile works really well for me.

 I'm very new and really interested.


text:
---
title: Configuration
description: Configure and customize environment settings in Maizzle PHP
page_order: 3
navigation:
  group: Getting Started
  order: 3
---

# Configuration

Maizzle PHP uses Jigsaw's `config.php` files to allow for environment-specific project settings.
These are PHP arrays with key-value pairs that define certain options, and can even include functions.

This gives you the freedom to define distinct settings for any build scenario you need,
ranging from quick local development, to staging builds or production-ready emails.

## Default Config {#default}

Maizzle PHP's [`config.php`](https://github.com/maizzle/maizzle/blob/master/config.php) is just a well-commented PHP array:

```php
/*

Maizzle - Email Development Framework

A project by Cosmin Popovici (@cossssmin) and ThemeMountain (@thememountainco).

Welcome to the Maizzle config file. This is where you can customise some
Maizzle settings for your project.

View the full documentation at https://maizzle.com/docs

|-------------------------------------------------------------------------------
| The default config                   https://maizzle.com/docs/building/#local
|-------------------------------------------------------------------------------
|
| This array contains the default Maizzle settings for development. This is
| used when you run the `npm run dev` or `npm run watch` commands.
|
*/

return [

    /*
    |-----------------------------------------------------------------------------
    | Layout                                    https://maizzle.com/docs/layouts/
    |-----------------------------------------------------------------------------
    |
    | Define a master layout that all templates will extend by default.
    |
    | Maizzle comes with a default layout that sets various tags to
    | use settings from your config, but you can of course create
    | your own layouts and extend them at a template level,
    | with front matter.
    |
    */
    'extends' => '_layouts.master',

    /*
    |-----------------------------------------------------------------------------
    | Doctype                     https://maizzle.com/docs/configuration/#doctype
    |-----------------------------------------------------------------------------
    |
    | Define a doctype that will be used in the layout your emails extend.
    |
    | Maizzle defines an HTML 5 doctype by default, but you can choose
    | any doctype you need. You can also override it for each email,
    | through a front matter variable. If you use an empty string,
    | Maizzle's layouts will fallback to `html`.
    |
    */
    'doctype' => 'html',

    /*
    |-----------------------------------------------------------------------------
    | Language                   https://maizzle.com/docs/configuration/#language
    |-----------------------------------------------------------------------------
    |
    | This will be used in the `lang=""` attribute of the `<html>` tag. It helps
    | screen reader software use the correct pronunciation. Of course, you can
    | override it in each template, with front matter variables.
    |
    */

    'language' => 'en',

    /*
    |-----------------------------------------------------------------------------
    | Character set               https://maizzle.com/docs/configuration/#charset
    |-----------------------------------------------------------------------------
    |
    | Character encoding is set to UTF-8 by default. This prevents breaking
    | reading patterns by ensuring proper character rendering, both
    | on-screen and with screen readers.
    |
    */

    'charset' => 'utf8',

    /*
    |-----------------------------------------------------------------------------
    | Document title                https://maizzle.com/docs/configuration/#title
    |-----------------------------------------------------------------------------
    |
    | The `<title>` tag is needed in order to give screen reader users context.
    | It also helps when viewing the email in a browser (like your email's
    | online version), by setting the title on the browser's tab.
    |
    | You should specify a `title` key in the front matter for each email.
    |
    */

    'title' => '',

    /*
    |-----------------------------------------------------------------------------
    | Google Fonts           https://maizzle.com/docs/configuration/#google-fonts
    |-----------------------------------------------------------------------------
    |
    | This is where you can define which Google Fonts Maizzle should import.
    |
    | It will only import Google Fonts by adding a `<link>` tag to your HTML.
    | In order to use them, you still need to register the .font-{name}
    | class in the tailwind.js config file. Use as few fonts and
    | weights as possible, because it affects load time.
    |
    | Example:
    |
    | 'googleFonts' => [
    |    'Open+Sans:300,400,700',
    |    'Merriweather',
    | ],
    |
    */

    'googleFonts' => [],

    /*
    |-----------------------------------------------------------------------------
    | Screenshots                  https://maizzle.com/docs/building/#screenshots
    |-----------------------------------------------------------------------------
    |
    | This is where you can define which devices Puppeteer should emulate when
    | using the `screenshots` command in Maizzle. iPad Mini and iPhone 6 are
    | enabled by default, but you can use any of the device descriptors
    | supported by Puppeteer.
    |
    | It is recommended that you use as few devices as possible, as this
    | process launches Chrome in headless mode and, the more devices
    | you use, the more time it will take to generate screenshots.
    |
    | Note that these only emulate the viewport of a device, they are not
    | intended for email client render tests.
    |
    */

    'screenshots' => [
        'devices' => [
            'iPad Mini',
            'iPhone 6',
        ],
        'type' => 'png',
        'quality' => 100,
    ],

    /*
    |-----------------------------------------------------------------------------
    | Transformers           https://maizzle.com/docs/configuration/#transformers
    |-----------------------------------------------------------------------------
    |
    | This is where you can define various transformations that will be applied
    | to the output files. To speed up development, Maizzle disables most of
    | them for local development. They are, however, enabled in the
    | staging and production environment configs.
    |
    | Don't let the output file size scare you when working locally. Having
    | transformations disabled, you can reference any Tailwind CSS class
    | when debugging in-browser, and rapidly prototype your emails.
    |
    | Some of the advanced minifier options are not exposed here, but you
    | can customise them in tasks/js/after-jigsaw.js.
    |
    */

    'transformers' => [
        'baseImageURL' => '',
        'inlineCSS' => [
            'enabled' => false,
            'styleToAttribute' => [
                'background-color' => 'bgcolor',
                'background-image' => 'background',
                'text-align' => 'align',
                'vertical-align' => 'valign',
            ],
            'applySizeAttribute' => [
                'width' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
                'height' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
            ],
            'excludedProperties' => [],
        ],
        'cleanup' => [
            'removeUnusedCss' => [
                'enabled' => false,
                'whitelist' => [
                    ".External*",
                    ".ReadMsgBody",
                    ".yshortcuts",
                    ".Mso*",
                    "#outlook",
                ],
                'backend' => [
                  [
                    'heads' => "{{",
                    'tails' => "}}",
                  ],
                ],
                'removeHTMLComments' => [
                    'enabled' => true,
                    'preserve' => ['if', 'endif', 'mso', 'ie'],
                ],
                'uglifyClassNames' => true,
            ],
            'keepOnlyAttributeSizes' => [
                'width' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
                'height' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
            ],
            'preferBgColorAttribute' => false,
        ],
        'prettify' => false,
        'minify' => [
            'minifyCSS' => false,
            'maxLineLength' => false,
            'preserveLineBreaks' => false,
            'collapseWhitespace' => false,
            'conservativeCollapse' => false,
        ],
        'sixHex' => false,
        'altText' => false,
    ],

    /*
    |-----------------------------------------------------------------------------
    | Plaintext                 https://maizzle.com/docs/configuration/#plaintext
    |-----------------------------------------------------------------------------
    |
    | When this option is set to true, Maizzle will generate a plaintext version
    | for every template. The .txt file will be placed in the same directory
    | as the HTML it's based on, and it will also have the same name.
    |
    */

    'plaintext' => false,

    /*
    |-----------------------------------------------------------------------------
    | BrowserSync             https://maizzle.com/docs/configuration/#browsersync
    |-----------------------------------------------------------------------------
    |
    | Tunnel
    |
    | When running the `watch` command with `tunnel` set to `true`, BrowserSync
    | will create a tunnel to your localhost, via localtunnel.me. You can
    | use this URL to share a live preview of what you're working
    | on with a colleague or a client.
    |
    | By default, setting it to `true` will generate a random localtunnel.me
    | subdomain. You can use a string instead, to have BrowserSync attempt
    | to use a custom subdomain.
    |
    | Directory listing
    |
    | Setting the `listing` option to `true` will enable a directory listing
    | when running the `watch` command, so you can browse through your
    | emails. You might want to set it to `false` when using the
    | tunnel option with a client.
    |
    */

    'browsersync' => [
        'tunnel' => false,
        'listing' => false,
    ],

    /*
    |-----------------------------------------------------------------------------
    | Helpers                     https://maizzle.com/docs/configuration/#helpers
    |-----------------------------------------------------------------------------
    |
    | Jigsaw config functions used by Maizzle in the build process.
    |
    */

    'googleFontsString' => function($page) {
        return collect($page->googleFonts)->transform(function($item, $key) {
            return str_replace(' ', '+', $item);
        })->implode('|');
    },

    /*
    |-----------------------------------------------------------------------------
    | Build defaults       https://maizzle.com/docs/configuration/#build-defaults
    |-----------------------------------------------------------------------------
    |
    | Configure additional Jigsaw build settings.
    |
    */

    'baseUrl' => '',
    'pretty' => false,
    'production' => false,
    'build' => [
        'source' => 'source',
        'destination' => 'build_local',
    ],
];
```

## Environments

Use environment configurations and NPM scripts to define settings and compile emails for different scenarios.

Think of them like this:

    When I run this command, should X happen? Should CSS be inlined? Should my HTML be minified? Do I need some data to be available for the templates?

Environment-based configurations are supported out of the box by Jigsaw,
and can be defined by simply duplicating the default `config.php` to include the desired environment in the file name.
([Jigsaw docs](https://jigsaw.tighten.co/docs/environments/))

### Local {#env-local}

[`config.php`](https://github.com/maizzle/maizzle/blob/master/config.php) is for local development. No CSS is purged from your final emails and no inlining takes place,
so that you can quickly prototype emails with all of Tailwind's classes at your disposal, for tinkering in the browser.

This one has the fastest build time, since almost no post-processing takes place.

### Staging {#env-staging}

Use [`config.staging.php`](https://github.com/maizzle/maizzle/blob/master/config,staging.php) to configure build settings for emails that you share with other humans.
This one enables post-processing similar to production builds, but it prettifies code so that people see nicely-formatted, readable code.

### Production {#env-production}

Finally, Maizzle PHP also provides a [`config.production.php`](https://github.com/maizzle/maizzle/blob/master/config.production.php) file,
which enables the most transformations, such as CSS inlining, unused CSS purging, and even email-optimised HTML minification.

### Custom Environments

You can go even further, and create your own, custom environments.

For example, you could create an environment config for a certain client or brand,
like `config.mystore.php` or `config.someclient.php` - all with their own settings.

As the [Jigsaw docs mention](http://jigsaw.tighten.co/docs/environments/), custom environment configurations are merged on top of the default `config.php` ones.
This means that for a custom environment you only need to specify the variables that you are changing.

---

Let's have a look at all the default options Maizzle comes with.

You can override all of these keys for each page in particular, with Front Matter variables. See [Jigsaw docs](http://jigsaw.tighten.co/docs/markdown/).

## Layouts

`'extends' => '_layouts.master',`

Maizzle PHP uses "master" pages, called Layouts.

A layout tipically contains the base HTML of a site (or, in our case, an email): things like the `<head>` tag, the `<body>` tag, and the main content wrapper.

Instead of always having to write it for each page, you simply _extend_ it from a page, thus reusing the same layout file.
Learn more in the [Laravel Blade docs](https://laravel.com/docs/5.7/blade#defining-a-layout) and [Jigsaw docs](https://jigsaw.tighten.co/docs/content-blade/).

### Blade-Markdown automatic extends

Normally with Jigsaw, your templates each need to specify what layout they extend, either with a Blade `@@extends()`, or through a Front Matter variable.

The `extends` key is provided in the default Maizzle PHP config so that, if you use `.blade.md` files,
they will extend `_layouts.master` automatically. No need to [extend with Front Matter](../layouts/#extending-layouts) for each email 🤙

## Doctype 1.1.0 {#doctype}

`'doctype' => 'html',`

By default, Maizzle PHP sets a HTML 5 doctype for your emails.
This is used in the `master.blade.php` layout, and will default to `html` if it's not set in the config:

```blade
<!DOCTYPE @{!! $page->doctype ?? 'html' !!}>
```

You can, of course, set this for each email template, through Front Matter:

```yaml
---
doctype: html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
title: Confirm your email
preheader: Please verify your email address with us
---
```

## Language

`'language' => 'en',`

The `language` key is used to define a content language for your emails.
Maizzle PHP uses it in the `lang=""` attribute on the `<html>` tag inside the `master.blade.php` layout file, and it defaults to `en`:

```php
<html lang="@{{ $page->language ?? 'en' }}" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
```

Specifying it in Front Matter will change it only for that email:

```yaml
---
language: ro
title: Verificare adresă de email
preheader: Te rugăm să ne confirmi adresa de email
---
```

## Charset

`'charset' => 'utf8',`

This option is used to set the default character encoding, defaulting to UTF-8:

```php
<meta charset="@{{ $page->charset ?? 'utf8' }}">
```

Most likely, you won't need to change this.

## Title

`'title' => 'Maizzle - Build HTML emails fast, with Tailwind CSS and Jigsaw',`

Used to enable the `<title></title>` tag in your email template. If empty, the tag will not be inserted:

```php
@@if($page->title)<title>@{{ $page->title }}</title>@@endif
```

As you saw in the previous examples, each email can specify the `title` in Front Matter.

For accessibility reasons, it's recommended that you always add a title.
As a bonus, if you're using the same email for your newsletter's 'web version', the browser tab will be informative.

## Google Fonts

The `'googleFonts'` key is an array with Google Fonts font names in Google's specific string formatting,
that Maizzle PHP should pull into your template.

Open Sans and Merriweather are provided as examples:

```php
'googleFonts' => [
    'Open+Sans:300,400,700',
    'Merriweather',
],
```

If this array is empty, the `<link>` tag containing the Google Fonts import will not be added:

```php
@@if($page->googleFonts)
  <!--[if !mso]><!--><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=@{{ $page->googleFontsString() }}"><!--<![endif]-->
@@endif
```

The `$page->googleFontsString()` in the code above is a helper method that is also defined in `config.php`.
It simply collects all Google Fonts you've specified, and returns a formatted string that we can use in the `<link>` tag:

```php
'googleFontsString' => function($page) {
    return collect($page->googleFonts)->transform(function($item, $key) {
        return str_replace(' ', '+', $item);
    })->implode('|');
},
```

Read more about [helper methods](https://jigsaw.tighten.co/docs/helper-methods/) in Jigsaw's docs.

## Screenshots

The `screenshots` array contains settings for the [Screenshots](../building/#screenshots) functionality.

You can use any [device descriptors](https://github.com/GoogleChrome/puppeteer/blob/master/DeviceDescriptors.js) that Puppeteer knows about,
and you can specify the screenshot file type and quality (quality applicable only to JPG).

```php
'screenshots' => [
    'devices' => [
        'iPad Mini',
        'iPhone 6',
    ],
    'type' => 'png',
    'quality' => 100,
],
```

Screenshots speed

        The more devices you add, the longer it will take to process all the screenshots.

## Transformers

Transformers control how the email magic happens: they enable various post-processing scripts that optimise your HTML for email clients.
The following examples show all options, but will vary between environments.

#### baseImageURL {.font-mono .text-base}

```php
'baseImageURL' => 'https://cdn.example.com/some/folder/',
```

When set to a _valid_ URL, all image paths in your email (both inline and background images) will have this URL prepended.
Useful if you already host your images somewhere, so you don't have to write the full URL every time when developing.

If you use a trailing slash, make sure your image src="" doesn't start with one.

#### inlineCSS {.font-mono .text-base}

```php
'inlineCSS' => [
    'enabled' => true,
    'styleToAttribute' => [
        'background-color' => 'bgcolor',
        'background-image' => 'background',
        'text-align' => 'align',
        'vertical-align' => 'valign',
    ],
    'applySizeAttribute' => [
        'width' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
        'height' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
    ],
    'excludedProperties' => [],
],
```

Uses Automattic's [Juice](https://github.com/Automattic/juice) library to inline CSS.

You can toggle this with the `enabled` boolean.
When enabled, you can also define if Juice should remove the original `<style></style>` tags after (possibly) inlining the CSS from them,
through `'removeStyleTags'`, as shown below.

#### `removeStyleTags` 1.0.2 {#removestyletags}

This option has been removed from the configs in `v1.1.0`, because it was set to `true` in all environments.
It now defaults to `true` in the JS post-processing script, but you can opt-out by setting it to `false` in your config:

```php
'inlineCSS' => [
    'enabled' => true,
    'removeStyleTags' => false,
    // [...]
],
```

@media rules

        removeStyleTags works together with preserveMediaQueries behind the scenes, so that any @media queries will not be removed from your <style></style> tags.

#### `styleToAttribute` 1.1.0 {#styletoattribute}

This option contains an array of rules that map CSS properties to HTML attributes.
These are used by the Juice inliner to duplicate inline CSS as HTML attributes on table tags:

```php
'inlineCSS' => [
    // ...
    'styleToAttribute' => [
        'background-color' => 'bgcolor',
        'background-image' => 'background',
        'text-align' => 'align',
        'vertical-align' => 'valign',
    ],
    // ...
],
```

Opt-out by design

By default, Maizzle PHP production configs include the `styleToAttribute` key, and populate it with [Juice's defaults](https://github.com/Automattic/juice/blob/master/lib/inline.js#L12-L17).
This is on purpose, for better email client compatibility.

However, if you specify a single mapping, Juice will only convert _that_ to an attribute,
keeping any other properties as inline CSS-only:

```php
'inlineCSS' => [
    'enabled' => true,
    'styleToAttribute' => [
        'background-color' => 'bgcolor',
    ],
],
```

With the code above, only the CSS `background-color` will be added as `bgcolor=""` to HTML elements -
`background-image`, `text-align` and `vertical-align` will remain as inlined CSS.

#### `applySizeAttribute` 1.1.0 {#applysizeattribute}

This allows you to specify an array of elements that should receive `width=""` and `height=""` attributes.
These elements will be passed to the Juice inliner, which will add any inline width and height CSS rules it finds as HTML attributes, but only for these elements.

#### `excludedProperties` 1.1.0 {#excludedproperties}

The `excludedProperties` option allows you to define an array of CSS properties that should be excluded from the CSS inlining process by Juice:

```php
'inlineCSS' => [
    'enabled' => true,
    // ...
    'excludedProperties' => [],
],
```

Maizzle PHP sets this to an empty array in the production environment configs.

Property names are considered unique, so you need to specify each one you'd like to exclude. For example:

```php
'excludedProperties' => ['padding', 'padding-left'],
```

Classes will be removed

        Corresponding classes that these CSS properties are derived from (i.e. pl-2) will still be removed from your HTML if removeUnusedCss is enabled.
        To prevent this, you could add 'removeStyleTags' => false, in the inlineCSS options array.

#### cleanup {.font-mono .text-base}

This key contains settings that you can use to clean up your email's code.

Do use it in production

        Cleaning up your HTML email results in smaller file sizes, which translate to faster email sendouts, faster opens (think slow 3G),
        and snappier rendering times (DOM parsing).
        Also, Gmail will clip your email around 102KB, so anything past that mark won't even be in the DOM
        (which can lead to unexpected results like tracking pixel not loaded or, worse, hidden unsubscribe links).

        In email, bigger is never better. Clean up your production emails.

#### `removeUnusedCss`

These options are passed to [email-remove-unused-css](https://bitbucket.org/codsen/email-remove-unused-css.git)
in order to safely remove unused CSS in your email.
You can also define whether certain HTML comments should be removed,
and if your CSS class names should be uglified so that they're much shorter (helps reduce HTML size):

```php
'removeUnusedCss' => [
    'enabled' => true,
    'whitelist' => [
        ".External*",
        ".ReadMsgBody",
        ".yshortcuts",
        ".Mso*",
        "#outlook",
    ],
    'backend' => [
      [
        'heads' => "@{{",
        'tails' => "}}",
      ],
    ],
    'removeHTMLComments' => [
        'enabled' => false,
        'preserve' => ['if', 'endif', 'mso', 'ie'],
    ],
    'uglifyClassNames' => false,
],
```

It is recommended to have `removeUnusedCss` enabled for production builds, as it reduces file size considerably.

Also, if you are just documenting your code, please note that you can use @php echo '{{-- Blade comments --}}' @endphp instead of `<!-- regular HTML comments -->`.
Blade comments are not rendered in your compiled emails.

#### `keepOnlyAttributeSizes` 1.1.0 {#keeponlyattributesizes}

```php
'cleanup' => [
    // [...]
    'keepOnlyAttributeSizes' => [
        'width' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
        'height' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
    ],
],
```

You can specify for which elements should the inline CSS `width` and `height` be removed.
As you can see, Maizzle defaults to the same elements as in the `applySizeAttribute` option.

      Removing the entire keepOnlyAttributeSizes key will leave any inline CSS widths and heights untouched.

Providing an empty array to one of its keys will not remove the corresponding CSS property for that key on any element.
So if you do this:

```php
'cleanup' => [
    // [...]
    'keepOnlyAttributeSizes' => [
        'width' => [],
        'height' => ['TABLE', 'TD', 'TH', 'IMG', 'VIDEO'],
    ],
],
```

... then any inline CSS `width` will be left untouched, while inline CSS `height` will be removed for all those elements specified in the array.

#### `preferBgColorAttribute`

```php
'preferBgColorAttribute' => true,
```

This will remove the inline `background-color: #......` CSS from tables, so they only use the HTML `bgcolor=""` attribute.
Set to `false` if you want background colours set with both CSS and HTML attributes.

Prefer CSS-only background colors?

        If you only want to use CSS for your background colours, you can remove the 'background-color' => 'bgcolor', mapping from styleToAttribute,
        so that Juice does not duplicate this CSS as an HTML attribute.

#### prettify {.font-mono .text-base}

```php
'prettify' => true,
```

When `true`, Maizzle PHP will use [pretty](https://www.npmjs.com/package/pretty) to beautify your email's HTML.
It indents your code and makes it more readable - useful before sending it to another human.

#### minify {.font-mono .text-base}

```php
'minify' => [
    'minifyCSS' => false,
    'maxLineLength' => false,
    'preserveLineBreaks' => false,
    'collapseWhitespace' => false,
    'conservativeCollapse' => false,
],
```

Uses [html-minifier](https://www.npmjs.com/package/html-minifier) to minify your email's HTML:

`minifyCSS` - whether to minify the embedded CSS in your `<style></style>` tag

`maxLineLength` - set a maximum line length. Some email clients have issues with lines of code that exceed a certain amount of characters. Defaults to a conservative `500` in the production config.

`preserveLineBreaks` - always collapse to 1 line break (never remove it entirely) when whitespace between tags include a line break. Requires `collapseWhitespace` to be `true`.

`collapseWhitespace` - collapses white space that contributes to text nodes in a document tree ([read more](http://perfectionkills.com/experimenting-with-html-minifier/#collapse_whitespace))

`conservativeCollapse` - always collapse to one space, never fully remove it

      Sometimes, after inlining and cleaning up CSS, it can happen that you end up with empty style="" tags. The minifier has an option called 'removeEmptyAttributes' that will always remove any such empty attributes. Maizzle PHP doesn't expose this option, but it's enabled by default.

#### sixHex {.font-mono .text-base}

```php
'sixHex' => true,
```

Uses [color-shorthand-hex-to-six-digit](https://www.npmjs.com/package/color-shorthand-hex-to-six-digit) to ensure your HEX colour codes are written in full, with 6 digits.
Some email clients don't support shorthand HEX, so we recommend leaving this enabled for production.

#### altText {.font-mono .text-base}

```php
'altText' => true,
```

Uses [html-img-alt](https://www.npmjs.com/package/html-img-alt) to make sure that all your `<img>` tags have an `alt=""` attribute defined.
If an image already includes the attribute, it'll leave it alone. If the attribute is missing, it will add an empty one.

## Plaintext

```php
'plaintext' => true,
```

Set this option to `true`, to have Maizzle PHP generate a plaintext version for every email template.
The .txt file will be placed in the same directory as the HTML it's based on, and it will also have the same name.

By default, plaintext generation is enabled only in the production config.

## BrowserSync

```php
'browsersync' => [
    'tunnel' => false,
    'listing' => false,
],
```

Basic settings for the BrowserSync plugin, that Maizzle PHP will use when you develop locally with `npm run watch`.

#### tunnel {.font-mono .text-base}

This enables localhost tunneling in Browsersync (through [localtunnel.me](https://localtunnel.me)),
so you can live-share a URL to an email that you're working on right now, with a colleague or a client.

Both parties see the same thing, so if you change a color and save, it will automatically refresh the page and update on their screen as well. Scrolling is synced, too.

You can also use a string instead of a boolean - for example `'tunnel' => 'mybrand'`.
In this case, BrowserSync will attempt to use a custom subdomain for the URL, i.e. `https://mybrand.localtunnel.me`.

If that subdomain is unavailable, you will be allocated a random name as usual.

#### listing {.font-mono .text-base}

When running the `npm run watch` command with this setting enabled, BrowserSync will open a file explorer in your browser, starting at the root of the build directory.

If you set this to `false`, the page opened by BrowserSync will be blank, and you'll need to manually navigate to your emails directory.

      If using the tunneling option to do a demo for a client, you might want to use 'listing' => false, so that they can't freely browse all your emails by going to the root URL.

## Helpers

Your config can also contain PHP helper methods that you can use to manipulate data or page variables.
Maizzle PHP comes with a `'googleFontsString'` method that formats the Google Fonts names you have defined and appends them to the URL in the `<link>` tag.

Learn more about helper methods in the [Jigsaw docs](http://jigsaw.tighten.co/docs/helper-methods/).

## Jigsaw build {#build-defaults}

These are Jigsaw core settings, like[ output file base URL](http://jigsaw.tighten.co/docs/page-metadata/), [pretty permalinks](http://jigsaw.tighten.co/docs/pretty-urls/), or source and destination directories for the build process.

#### pretty {.font-mono .text-base}

```php
'pretty' => false,
```

Setting the `'pretty'` key to `true` will have Jigsaw output each file as `index.html`, inside a folder named after the original source file.
Maizzle PHP disables it by default in all environments.

More on pretty permalinks, in the [Jigsaw docs](http://jigsaw.tighten.co/docs/pretty-urls/).

#### build {#build-source-destination .font-mono .text-base}

```php
'build' => [
    'source' => 'source',
    'destination' => 'build_staging',
],
```

`source` defines the path to the source directory where Jigsaw should look for files to be compiled.

`destination` defines the path to the directory where Jigsaw should output the generated files.

#### Source and destination can be used with build environments

Imagine you have a folder named `/spacecogs` that represents a client, and it contains a bunch of emails.

You can create a config specifically for this client, and change source and destination so that when you build for this environment,
Jigsaw will only build the emails for _this_ client, instead of all emails in the `/source` directory:

```php
// config.spacecogs.php

'build' => [
    'source' => 'source/spacecogs',
    'destination' => 'spacecogs',
],
```

Of course, you'll need to [define the NPM script](/docs/building/#npm-scripts):

```json
// package.json

"scripts": {
    ...
    "spacecogs": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --env=production --config=node_modules/laravel-mix/setup/webpack.config.js",
},
```

      Jigsaw always looks for _layouts and partials relative to the source folder specified here.
      If you set it to a custom path like shown above, you will need to have the layouts and any other partials duplicated inside this new directory.

Be [very careful](https://github.com/tightenco/jigsaw/issues/222#issuecomment-394157769) how you change these paths: upon build, the destination folder is deleted.

## Tailwind CSS {#tailwind}

Maizzle PHP uses Tailwind's default configuration, customized for email development.

Specifically:

- all units are pixels or percentages
- some utilities that aren't supported in email have been disabled
- [`important`](https://tailwindcss.com/docs/configuration#important) is set to `true`, so that responsive utilities can actually override inline CSS
- although darn cool, the `:` [separator](https://tailwindcss.com/docs/configuration#separator) which allows for classes like `hover:bg-blue` doesn't work in some email clients (ex. Gmail).
It has been replaced with `-`
- for the same reason, classes such as `w-1/2` have been renamed to `w-1-2`

### Tailwind plugins 1.1.0 {#tailwind-plugins}

Starting with `v1.1.0`, Maizzle PHP comes with custom Tailwind CSS plugins.

#### Background gradients plugin {#gradients-tailwind-plugin}

A plugin that generates CSS background gradients, forked from [@benface's plugin](https://github.com/benface/tailwindcss-gradients).

You can define the gradients in your `tailwind.js` config, just like with any other module:

```js
let gradients = {
  'grey-dark': ['#b8c2cc', '#8795a1'],
  'red-dark': ['#e3342f', '#cc1f1a'],
  'orange-dark': ['#f6993f', '#de751f'],
  'yellow-dark': ['#ffed4a', '#f2d024'],
  'green-dark': ['#38c172', '#1f9d55'],
  'teal-dark': ['#4dc0b5', '#38a89d'],
  'blue-dark': ['#3490dc', '#2779bd'],
  'indigo-dark': ['#6574cd', '#5661b3'],
  'purple-dark': ['#9561e2', '#794acf'],
  'pink-dark': ['#f66d9b', '#eb5286'],
}
```

Those are the default ones Maizzle PHP comes with, and they're based on Tailwind's default color palette.
Of course, Tailwind's `config()` function can be used instead of hardcoding HEX values - [see how](../examples/gradients/#using-tailwind-colors).

You can add your own gradients, with as many color stops as you need:

```js
let gradients = {
  // ...

  'hydrogen': ['#667db6', '#0082c8', '0082c8', '667db6'],
}
```

If you define a single color instead of an array, the resulting gradient will start from `transparent` and move towards the color you defined:

```js
let gradients = {
  // ...

  'black': '#22292f',
}
```

... will generate classes like:

```css
.bg-gradient-to-top-black {
  background-image: linear-gradient(to top, transparent, #22292f);
}
```

Of course, the generated classes cover all four directions. With the example above, you'd get:

```css
.bg-gradient-to-top-black {
  background-image: linear-gradient(to top, transparent, #22292f);
}
.bg-gradient-to-right-black {
  background-image: linear-gradient(to right, transparent, #22292f);
}
.bg-gradient-to-bottom-black {
  background-image: linear-gradient(to bottom, transparent, #22292f);
}
.bg-gradient-to-left-black {
  background-image: linear-gradient(to left, transparent, #22292f);
}
```

Just like with any module, you can control which variants are generated.
Maizzle PHP only enables the `hover` variant by default, but you can use any of the variants, or set it to `false` to not generate any background gradients:

```js
modules: {
  // ...
  gradients: ['hover'],
 // ...
},
```

Need inspiration? Try [uigradients.com](https://uigradients.com) {.text-indigo}

repository: jasonlbeggs/docs-php

repo_name: jasonlbeggs/docs-php


text:
---
title: Right-To-Left Support
page_title: Right-To-Left Support | UI for WinForms Documentation
description: Right-To-Left Support
slug: winforms/calendar/localization/right-to-left-support
tags: right-to-left,support
published: True
position: 0
previous_url: calendar-localization-right-to-left-support
---

# Right-To-Left Support

##

RadCalendar fully supports right-to-left (RTL) language locales. You can enable/disable the right-to-left support using the __RightToLeft__ enumeration, which has two members: __Yes__, __No__.

![calendar-localization-right-to-left-support 001](images/calendar-localization-right-to-left-support001.png)

__Assigning RightToLeft__

{{source=..\SamplesCS\Calendar\ColumnRowHeaders.cs region=rtl}}
{{source=..\SamplesVB\Calendar\ColumnRowHeaders.vb region=rtl}}

````C#
radCalendar1.RightToLeft = RightToLeft.Yes;

````
````VB.NET
RadCalendar1.RightToLeft = RightToLeft.Yes

````

{{endregion}}


text:
# systemd-journal-logger

A pure Rust [log] logger for the [systemd journal][1].

This logger used [libsystemd](https://github.com/lucab/libsystemd-rs) and has no dependency on the libsystemd C library.

[log]: https://docs.rs/log
[1]: https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html

## Usage

```toml
[dependencies]
log = "^0.4"
systemd-journal-logger = "0.3.1"
```

Then initialize the logger at the start of `main`:

```rust
use log::{info, LevelFilter};

fn main() {
    systemd_journal_logger::init();
    log::set_max_level(LevelFilter::Info);

    info!("Hello systemd journal");
}
```

You can also add additional fields to every log message, such as the version of your executable:

```rust
use log::{info, LevelFilter};

fn main() {
    let version = env!("CARGO_PKG_VERSION");
    systemd_journal_logger::init_with_extra_fields(vec![("VERSION", version)]).unwrap();
    log::set_max_level(LevelFilter::Info);

    info!("Hello systemd journal");
}
```

These extra fields appear in the output of `journalctl --output=verbose` or in any of the JSON output formats of `journalctl`.

See [systemd_service.rs](./examples/systemd_service.rs) for a simple example of logging in a systemd service which automatically falls back to a different logger if not started through systemd.

## Related projects

- [rust-systemd](https://github.com/jmesmon/rust-systemd) provides a [logger implementation][1] based on the `libsystemd` C library.
- [slog-journald](https://github.com/slog-rs/journald) provides an [slog] logger for the systemd journal, also based on the `libsystemd` C library.

Both loggers use mostly the same fields and priorities as this implementation.

[1]: https://docs.rs/systemd/0.8.2/systemd/journal/struct.JournalLog.html
[slog]: https://github.com/slog-rs/slog

## License

Either [MIT](./LICENSE-MIT) or [Apache 2.0](./LICENSE-APACHE-2.0), at your option.